From: Jacob Czekalla jczekalla@codeweavers.com
--- dlls/taskschd/regtask.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/dlls/taskschd/regtask.c b/dlls/taskschd/regtask.c index bae0d4cb0b2..d5113cca304 100644 --- a/dlls/taskschd/regtask.c +++ b/dlls/taskschd/regtask.c @@ -464,9 +464,28 @@ static HRESULT WINAPI regtasks_Invoke(IRegisteredTaskCollection *iface, DISPID d
static HRESULT WINAPI regtasks_get_Count(IRegisteredTaskCollection *iface, LONG *count) { - FIXME("%p,%p: stub\n", iface, count); - if (count) *count = 0; - return E_NOTIMPL; + HRESULT hr; + RegisteredTaskCollection *reg_tasks = impl_from_IRegisteredTaskCollection(iface); + TASK_NAMES task_names = NULL; + DWORD start_index = 0, num_tasks = 0, i = 0; + + if (!count) + return E_POINTER; + + hr = SchRpcEnumTasks(reg_tasks->path, 0, &start_index, 0, &num_tasks, &task_names); + if (FAILED(hr)) + { + *count = 0; + return hr; + } + + *count = num_tasks; + + for (;i < num_tasks; i++) + MIDL_user_free(task_names[i]); + MIDL_user_free(task_names); + + return S_OK; }
static HRESULT WINAPI regtasks_get_Item(IRegisteredTaskCollection *iface, VARIANT index, IRegisteredTask **regtask)