/************************************************************************** * IControlPanel_Constructor */ HRESULT WINAPI IControlPanel_Constructor(IUnknown* pUnkOuter, REFIID riid, LPVOID * ppv) { ICPanelImpl *sf; TRACE("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid(riid)); if (!ppv) return E_POINTER; if (pUnkOuter && !IsEqualIID (riid, &IID_IUnknown)) return CLASS_E_NOAGGREGATION; sf = (ICPanelImpl *) LocalAlloc(LMEM_ZEROINIT, sizeof(ICPanelImpl)); if (!sf) return E_OUTOFMEMORY; sf->ref = 0; sf->lpVtbl = &vt_ShellFolder2; sf->lpVtblPersistFolder2 = &vt_PersistFolder2; sf->lpVtblShellExecuteHookW = &vt_ShellExecuteHookW; sf->lpVtblShellExecuteHookA = &vt_ShellExecuteHookA; sf->pidlRoot = _ILCreateControlPanel(); /* my qualified pidl */ sf->pUnkOuter = pUnkOuter ? pUnkOuter : _IUnknown_ (sf); if (!SUCCEEDED(IUnknown_QueryInterface(_IUnknown_(sf), riid, ppv))) { IUnknown_Release(_IUnknown_(sf)); return E_NOINTERFACE; } TRACE("--(%p)\n", sf); return S_OK; }
HRESULT WINAPI CControlPanelFolder::FinalConstruct() { pidlRoot = _ILCreateControlPanel(); /* my qualified pidl */ if (pidlRoot == NULL) return E_OUTOFMEMORY; return S_OK; }