static HRESULT WINAPI enumvar_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *var, ULONG *fetched) { EnumVARIANT *enumvar = impl_from_IEnumVARIANT(iface); LONG i; TRACE("%p,%u,%p,%p\n", iface, celt, var, fetched); for (i = 0; i < celt && enumvar->pos < enumvar->folders->count; i++) { ITaskFolder *folder; HRESULT hr; hr = TaskFolder_create(enumvar->folders->path, enumvar->folders->list[enumvar->pos++], &folder, FALSE); if (hr) return hr; if (!var) { ITaskFolder_Release(folder); return E_POINTER; } V_VT(&var[i]) = VT_DISPATCH; V_DISPATCH(&var[i]) = (IDispatch *)folder; } if (fetched) *fetched = i; return i == celt ? S_OK : S_FALSE; }
static HRESULT WINAPI TaskService_GetFolder(ITaskService *iface, BSTR path, ITaskFolder **folder) { TRACE("%p,%s,%p\n", iface, debugstr_w(path), folder); if (!folder) return E_POINTER; return TaskFolder_create(path, NULL, folder, FALSE); }
static HRESULT WINAPI folders_get_Item(ITaskFolderCollection *iface, VARIANT index, ITaskFolder **folder) { TaskFolderCollection *folders = impl_from_ITaskFolderCollection(iface); LONG idx; TRACE("%p,%s,%p\n", iface, debugstr_variant(&index), folder); if (!folder) return E_POINTER; if (V_VT(&index) == VT_BSTR) return TaskFolder_create(folders->path, V_BSTR(&index), folder, FALSE); idx = get_var_int(&index); /* collections are 1 based */ if (idx < 1 || idx > folders->count) return E_INVALIDARG; return TaskFolder_create(folders->path, folders->list[idx - 1], folder, FALSE); }
static HRESULT WINAPI TaskFolder_GetFolder(ITaskFolder *iface, BSTR path, ITaskFolder **new_folder) { TaskFolder *folder = impl_from_ITaskFolder(iface); TRACE("%p,%s,%p\n", iface, debugstr_w(path), folder); if (!path) return E_INVALIDARG; if (!new_folder) return E_POINTER; return TaskFolder_create(folder->path, path, new_folder, FALSE); }
static HRESULT WINAPI TaskService_GetFolder(ITaskService *iface, BSTR path, ITaskFolder **folder) { TaskService *task_svc = impl_from_ITaskService(iface); TRACE("%p,%s,%p\n", iface, debugstr_w(path), folder); if (!folder) return E_POINTER; if (!task_svc->connected) return HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED); return TaskFolder_create(path, NULL, folder, FALSE); }
static HRESULT WINAPI TaskFolder_CreateFolder(ITaskFolder *iface, BSTR path, VARIANT sddl, ITaskFolder **new_folder) { TaskFolder *folder = impl_from_ITaskFolder(iface); ITaskFolder *tmp_folder = NULL; HRESULT hr; TRACE("%p,%s,%s,%p\n", iface, debugstr_w(path), debugstr_variant(&sddl), folder); if (!path) return E_INVALIDARG; if (!new_folder) new_folder = &tmp_folder; if (!is_variant_null(&sddl)) FIXME("security descriptor %s is ignored\n", debugstr_variant(&sddl)); hr = TaskFolder_create(folder->path, path, new_folder, TRUE); if (tmp_folder) ITaskFolder_Release(tmp_folder); return hr; }