static HRESULT WINAPI MSTASK_ITaskScheduler_Activate(ITaskScheduler *iface, LPCWSTR task_name, REFIID riid, IUnknown **unknown) { ITask *task; IPersistFile *pfile; HRESULT hr; TRACE("%p, %s, %s, %p\n", iface, debugstr_w(task_name), debugstr_guid(riid), unknown); hr = ITaskScheduler_NewWorkItem(iface, task_name, &CLSID_CTask, riid, (IUnknown **)&task); if (hr != S_OK) return hr; hr = ITask_QueryInterface(task, &IID_IPersistFile, (void **)&pfile); if (hr == S_OK) { WCHAR *curfile; hr = IPersistFile_GetCurFile(pfile, &curfile); if (hr == S_OK) { hr = IPersistFile_Load(pfile, curfile, STGM_READ | STGM_SHARE_DENY_WRITE); CoTaskMemFree(curfile); } IPersistFile_Release(pfile); } if (hr == S_OK) *unknown = (IUnknown *)task; else ITask_Release(task); return hr; }
static HRESULT WINAPI MSTASK_IPersistFile_QueryInterface( IPersistFile* iface, REFIID riid, void **ppvObject) { TaskImpl *This = impl_from_IPersistFile(iface); TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), ppvObject); return ITask_QueryInterface(&This->ITask_iface, riid, ppvObject); }