/************************************************************************* * DllGetClassObject [SHELL32.@] * SHDllGetClassObject [SHELL32.128] */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) { HRESULT hres = E_OUTOFMEMORY; IClassFactory * pcf = NULL; int i; TRACE("CLSID:%s,IID:%s\n",shdebugstr_guid(rclsid),shdebugstr_guid(iid)); if (!ppv) return E_INVALIDARG; *ppv = NULL; /* search our internal interface table */ for(i=0;InterfaceTable[i].riid;i++) { if(IsEqualIID(InterfaceTable[i].riid, rclsid)) { TRACE("index[%u]\n", i); pcf = IDefClF_fnConstructor(InterfaceTable[i].lpfnCI, NULL, NULL); } } if (!pcf) { FIXME("failed for CLSID=%s\n", shdebugstr_guid(rclsid)); return CLASS_E_CLASSNOTAVAILABLE; } hres = IClassFactory_QueryInterface(pcf, iid, ppv); IClassFactory_Release(pcf); TRACE("-- pointer to class factory: %p\n",*ppv); return hres; }
static HRESULT WINAPI IShellItemArray_fnBindToHandler(IShellItemArray *iface, IBindCtx *pbc, REFGUID bhid, REFIID riid, void **ppvOut) { IShellItemArrayImpl *This = impl_from_IShellItemArray(iface); FIXME("Stub: %p (%p, %s, %s, %p)\n", This, pbc, shdebugstr_guid(bhid), shdebugstr_guid(riid), ppvOut); return E_NOTIMPL; }
/****************************************************************************** * IDefClF_fnCreateInstance */ HRESULT WINAPI IDefClFImpl::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject) { TRACE("%p->(%p,%s,%p)\n", this, pUnkOuter, shdebugstr_guid(&riid), ppvObject); *ppvObject = NULL; if (riidInst == NULL || IsEqualCLSID(riid, *riidInst) || IsEqualCLSID(riid, IID_IUnknown)) { return lpfnCI(pUnkOuter, riid, ppvObject); } ERR("unknown IID requested %s\n", shdebugstr_guid(&riid)); return E_NOINTERFACE; }
/************************************************************************** * ISF_MyComputer_Constructor */ HRESULT WINAPI ISF_MyComputer_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IMyComputerFolderImpl *sf; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) return E_POINTER; if (pUnkOuter) return CLASS_E_NOAGGREGATION; sf = LocalAlloc (LMEM_ZEROINIT, sizeof (IMyComputerFolderImpl)); if (!sf) return E_OUTOFMEMORY; sf->ref = 0; sf->IShellFolder2_iface.lpVtbl = &vt_ShellFolder2; sf->IPersistFolder2_iface.lpVtbl = &vt_PersistFolder2; sf->pidlRoot = _ILCreateMyComputer (); /* my qualified pidl */ if (FAILED (IUnknown_QueryInterface (&sf->IShellFolder2_iface, riid, ppv))) { IUnknown_Release (&sf->IShellFolder2_iface); return E_NOINTERFACE; } TRACE ("--(%p)\n", sf); return S_OK; }
/************************************************************************** * CPrinterFolder::GetUIObjectOf * * PARAMETERS * HWND hwndOwner, //[in ] Parent window for any output * UINT cidl, //[in ] array size * LPCITEMIDLIST* apidl, //[in ] simple pidl array * REFIID riid, //[in ] Requested Interface * UINT* prgfInOut, //[ ] reserved * LPVOID* ppvObject) //[out] Resulting Interface * */ HRESULT WINAPI CPrinterFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) { IUnknown *pObj = NULL; HRESULT hr = E_INVALIDARG; TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut); if (!ppvOut) return hr; *ppvOut = NULL; if ((IsEqualIID (riid, IID_IExtractIconA) || IsEqualIID(riid, IID_IExtractIconW)) && cidl == 1) hr = IEI_Printers_Constructor(apidl[0], riid, &pObj); else hr = E_NOINTERFACE; if (SUCCEEDED(hr) && !pObj) hr = E_OUTOFMEMORY; *ppvOut = pObj; TRACE ("(%p)->hr=0x%08lx\n", this, hr); return hr; }
static HRESULT CompositeCMenu_Constructor(IContextMenu **menus,UINT menu_count, REFIID riid, void **ppv) { CompositeCMenu *ret = HeapAlloc(GetProcessHeap(),0,sizeof(CompositeCMenu)); UINT i; TRACE("(%p,%u,%s,%p)\n",menus,menu_count,shdebugstr_guid(riid),ppv); if(!ret) return E_OUTOFMEMORY; ret->IContextMenu3_iface.lpVtbl = &CompositeCMenuVtbl; ret->menu_count = menu_count; ret->menus = HeapAlloc(GetProcessHeap(),0,menu_count*sizeof(IContextMenu*)); if(!ret->menus) { HeapFree(GetProcessHeap(),0,ret); return E_OUTOFMEMORY; } ret->offsets = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,menu_count*sizeof(UINT)); if(!ret->offsets) { HeapFree(GetProcessHeap(),0,ret->menus); HeapFree(GetProcessHeap(),0,ret); return E_OUTOFMEMORY; } ret->refCount=0; memcpy(ret->menus,menus,menu_count*sizeof(IContextMenu*)); for(i=0;i<menu_count;i++) IContextMenu_AddRef(menus[i]); return IContextMenu3_QueryInterface(&(ret->IContextMenu3_iface),riid,ppv); }
/************************************************************************** * ISF_ControlPanel_fnQueryInterface * * NOTES supports not IPersist/IPersistFolder */ static HRESULT WINAPI ISF_ControlPanel_fnQueryInterface(IShellFolder2 * iface, REFIID riid, LPVOID * ppvObject) { ICPanelImpl *This = (ICPanelImpl *)iface; TRACE("(%p)->(%s,%p)\n", This, shdebugstr_guid(riid), ppvObject); *ppvObject = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IShellFolder) || IsEqualIID(riid, &IID_IShellFolder2)) *ppvObject = This; else if (IsEqualIID(riid, &IID_IPersist) || IsEqualIID(riid, &IID_IPersistFolder) || IsEqualIID(riid, &IID_IPersistFolder2)) *ppvObject = _IPersistFolder2_(This); else if (IsEqualIID(riid, &IID_IShellExecuteHookW)) *ppvObject = _IShellExecuteHookW_(This); else if (IsEqualIID(riid, &IID_IShellExecuteHookA)) *ppvObject = _IShellExecuteHookA_(This); if (*ppvObject) { IUnknown_AddRef((IUnknown *)(*ppvObject)); TRACE("-- Interface:(%p)->(%p)\n", ppvObject, *ppvObject); return S_OK; } TRACE("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; }
/************************************************************************** * 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; }
/************************************************************************** * ISF_Fonts_Constructor */ HRESULT WINAPI ISF_Fonts_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IGenericSFImpl *sf; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) return E_POINTER; if (pUnkOuter) return CLASS_E_NOAGGREGATION; sf = (IGenericSFImpl *) HeapAlloc ( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof (IGenericSFImpl)); if (!sf) return E_OUTOFMEMORY; sf->ref = 0; sf->lpVtbl = &vt_ShellFolder2; sf->lpVtblPersistFolder2 = &vt_NP_PersistFolder2; sf->lpVtblContextMenuFontItem = &vt_ContextMenu2FontItem; sf->pidlRoot = _ILCreateFont(); /* my qualified pidl */ if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (sf), riid, ppv))) { IUnknown_Release (_IUnknown_ (sf)); return E_NOINTERFACE; } TRACE ("--(%p)\n", sf); return S_OK; }
/************************************************************************** * CNetFolder::CreateViewObject */ HRESULT WINAPI CNetFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) { CComPtr<IShellView> pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid (&riid), ppvOut); if (!ppvOut) return hr; *ppvOut = NULL; if (IsEqualIID(riid, IID_IDropTarget)) { WARN("IDropTarget not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, IID_IContextMenu)) { WARN("IContextMenu not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, IID_IShellView)) { SFV_CREATE sfvparams = {sizeof(SFV_CREATE), this}; hr = SHCreateShellFolderView(&sfvparams, (IShellView**)ppvOut); } TRACE("-- (%p)->(interface=%p)\n", this, ppvOut); return hr; }
static HRESULT WINAPI ShellDispatch_QueryInterface(IShellDispatch5 *iface, REFIID riid, LPVOID *ppv) { ShellDispatch *This = impl_from_IShellDispatch5(iface); TRACE("(%p,%p,%p)\n", iface, riid, ppv); if (!ppv) return E_INVALIDARG; if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IDispatch, riid) || IsEqualIID(&IID_IShellDispatch, riid) || IsEqualIID(&IID_IShellDispatch2, riid) || IsEqualIID(&IID_IShellDispatch3, riid) || IsEqualIID(&IID_IShellDispatch4, riid) || IsEqualIID(&IID_IShellDispatch5, riid)) *ppv = &This->IShellDispatch5_iface; else { FIXME("not implemented for %s\n", shdebugstr_guid(riid)); *ppv = NULL; return E_NOINTERFACE; } IShellDispatch5_AddRef(iface); return S_OK; }
HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv) { IShellItemArrayImpl *This; IShellItem **array; HRESULT ret; TRACE("%p, %s, %p\n", psi, shdebugstr_guid(riid), ppv); array = HeapAlloc(GetProcessHeap(), 0, sizeof(IShellItem*)); if(!array) return E_OUTOFMEMORY; ret = IShellItemArray_Constructor(NULL, riid, (void**)&This); if(SUCCEEDED(ret)) { array[0] = psi; IShellItem_AddRef(psi); This->array = array; This->item_count = 1; *ppv = This; } else { HeapFree(GetProcessHeap(), 0, array); *ppv = NULL; } return ret; }
/************************************************************************** * AutoComplete_QueryInterface */ static HRESULT WINAPI IAutoComplete_fnQueryInterface( IAutoComplete * iface, REFIID riid, LPVOID *ppvObj) { IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; TRACE("(%p)->(\n\tIID:\t%s,%p)\n", This, shdebugstr_guid(riid), ppvObj); *ppvObj = NULL; if(IsEqualIID(riid, &IID_IUnknown)) { *ppvObj = This; } else if(IsEqualIID(riid, &IID_IAutoComplete)) { *ppvObj = (IAutoComplete*)This; } else if(IsEqualIID(riid, &IID_IAutoComplete2)) { *ppvObj = _IAutoComplete2_ (This); } if (*ppvObj) { IAutoComplete_AddRef((IAutoComplete*)*ppvObj); TRACE("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); return S_OK; } TRACE("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; }
/************************************************************************** * IDropTargetHelper_Constructor */ HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IDropTargetHelperImpl *dth; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) return E_POINTER; if (pUnkOuter) return CLASS_E_NOAGGREGATION; dth = (IDropTargetHelperImpl *) LocalAlloc (LMEM_ZEROINIT, sizeof (IDropTargetHelperImpl)); if (!dth) return E_OUTOFMEMORY; dth->ref = 0; dth->lpVtbl = &vt_IDropTargetHelper; if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (dth), riid, ppv))) { IUnknown_Release (_IUnknown_ (dth)); return E_NOINTERFACE; } TRACE ("--(%p)\n", dth); return S_OK; }
/************************************************************************** * ISF_Printers_Constructor */ HRESULT WINAPI ISF_Printers_Constructor ( IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IGenericSFImpl *sf; HRESULT hr; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (pUnkOuter) return CLASS_E_NOAGGREGATION; sf = HeapAlloc( GetProcessHeap(), 0, sizeof(*sf) ); if (!sf) return E_OUTOFMEMORY; sf->ref = 1; sf->lpVtbl = &vt_ShellFolder2; sf->lpVtblPersistFolder2 = &vt_PersistFolder2; sf->pidlRoot = _ILCreatePrinters(); /* my qualified pidl */ hr = IUnknown_QueryInterface( _IUnknown_(sf), riid, ppv ); IUnknown_Release( _IUnknown_(sf) ); TRACE ("--(%p)\n", *ppv); return hr; }
/************************************************************************** * ISF_Printers_fnGetUIObjectOf * * PARAMETERS * HWND hwndOwner, //[in ] Parent window for any output * UINT cidl, //[in ] array size * LPCITEMIDLIST* apidl, //[in ] simple pidl array * REFIID riid, //[in ] Requested Interface * UINT* prgfInOut, //[ ] reserved * LPVOID* ppvObject) //[out] Resulting Interface * */ static HRESULT WINAPI ISF_Printers_fnGetUIObjectOf (IShellFolder2 * iface, HWND hwndOwner, UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; IUnknown *pObj = NULL; HRESULT hr = E_INVALIDARG; TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", This, hwndOwner, cidl, apidl, shdebugstr_guid (riid), prgfInOut, ppvOut); if (!ppvOut) return hr; *ppvOut = NULL; if ((IsEqualIID (riid, &IID_IExtractIconA) || IsEqualIID(riid, &IID_IExtractIconW)) && (cidl == 1)) { IUnknown *pUnk = IEI_Printers_Constructor(apidl[0]); hr = IUnknown_QueryInterface(pUnk, riid, (void**)&pObj); IUnknown_Release(pUnk); } else hr = E_NOINTERFACE; if (SUCCEEDED(hr) && !pObj) hr = E_OUTOFMEMORY; *ppvOut = pObj; TRACE ("(%p)->hr=0x%08lx\n", This, hr); return hr; }
/************************************************************************** * ISF_Printers_fnQueryInterface * * NOTE does not support IPersist/IPersistFolder */ static HRESULT WINAPI ISF_Printers_fnQueryInterface( IShellFolder2 * iface, REFIID riid, LPVOID * ppvObj) { IGenericSFImpl *This = (IGenericSFImpl *)iface; TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj); *ppvObj = NULL; if (IsEqualIID (riid, &IID_IUnknown) || IsEqualIID (riid, &IID_IShellFolder) || IsEqualIID (riid, &IID_IShellFolder2)) { *ppvObj = _IShellFolder_(This); } else if (IsEqualIID (riid, &IID_IPersist) || IsEqualIID (riid, &IID_IPersistFolder) || IsEqualIID (riid, &IID_IPersistFolder2)) { *ppvObj = _IPersistFolder2_ (This); } if (*ppvObj) { IUnknown_AddRef ((IUnknown *) (*ppvObj)); TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); return S_OK; } TRACE ("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; }
/************************************************************************** * IDropTargetHelper_fnQueryInterface */ static HRESULT WINAPI IDropTargetHelper_fnQueryInterface (IDropTargetHelper * iface, REFIID riid, LPVOID * ppvObj) { dragdrophelper *This = impl_from_IDropTargetHelper(iface); TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj); *ppvObj = NULL; if (IsEqualIID (riid, &IID_IUnknown) || IsEqualIID (riid, &IID_IDropTargetHelper)) { *ppvObj = &This->IDropTargetHelper_iface; } else if (IsEqualIID (riid, &IID_IDragSourceHelper)) { *ppvObj = &This->IDragSourceHelper_iface; } if (*ppvObj) { IUnknown_AddRef ((IUnknown *) (*ppvObj)); TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); return S_OK; } FIXME ("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; }
static HRESULT WINAPI ShellItem2_GetPropertyStore(IShellItem2 *iface, GETPROPERTYSTOREFLAGS flags, REFIID riid, void **ppv) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%d, %s, %p)\n", This, flags, shdebugstr_guid(riid), ppv); return E_NOTIMPL; }
/************************************************************************** * ISF_NetworkPlaces_Constructor */ HRESULT WINAPI ISF_NetworkPlaces_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IGenericSFImpl *sf; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) return E_POINTER; if (pUnkOuter) return CLASS_E_NOAGGREGATION; sf = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof (IGenericSFImpl)); if (!sf) return E_OUTOFMEMORY; sf->ref = 0; sf->IShellFolder2_iface.lpVtbl = &vt_ShellFolder2; sf->IPersistFolder2_iface.lpVtbl = &vt_NP_PersistFolder2; sf->pidlRoot = _ILCreateNetHood(); /* my qualified pidl */ if (FAILED (IShellFolder2_QueryInterface (&sf->IShellFolder2_iface, riid, ppv))) { IShellFolder2_Release (&sf->IShellFolder2_iface); return E_NOINTERFACE; } TRACE ("--(%p)\n", sf); return S_OK; }
/************************************************************************** * ISF_ControlPanel_fnCreateViewObject */ static HRESULT WINAPI ISF_ControlPanel_fnCreateViewObject(IShellFolder2 * iface, HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { ICPanelImpl *This = (ICPanelImpl *)iface; LPSHELLVIEW pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", This, hwndOwner, shdebugstr_guid(riid), ppvOut); if (ppvOut) { *ppvOut = NULL; if (IsEqualIID(riid, &IID_IDropTarget)) { WARN("IDropTarget not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, &IID_IContextMenu)) { WARN("IContextMenu not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, &IID_IShellView)) { pShellView = IShellView_Constructor((IShellFolder *) iface); if (pShellView) { hr = IShellView_QueryInterface(pShellView, riid, ppvOut); IShellView_Release(pShellView); } } } TRACE("--(%p)->(interface=%p)\n", This, ppvOut); return hr; }
HRESULT WINAPI SHCreateDefaultContextMenu(const DEFCONTEXTMENU *pdcm, REFIID riid, void **ppv) { IShellFolder *folder=pdcm->psf; LPITEMIDLIST folder_pidl; HRESULT ret; IContextMenu *system_menu; TRACE("(%p,%s,%p)\n",pdcm,shdebugstr_guid(riid),ppv); if(!pdcm->pidlFolder) { IPersistFolder2 *persist; IShellFolder_QueryInterface(folder,&IID_IPersistFolder2,(void**)&persist); IPersistFolder2_GetCurFolder(persist,&folder_pidl); IPersistFolder2_Release(persist); } else folder_pidl=ILClone(pdcm->pidlFolder); if(pdcm->cKeys==0) FIXME("Loading shell extensions using IQueryAssociations not yet supported\n"); ItemMenu_Constructor(folder, folder_pidl, (const LPCITEMIDLIST*)pdcm->apidl, pdcm->cidl, &IID_IContextMenu, (void**)&system_menu); ret = SHELL_CreateContextMenu(pdcm->hwnd,system_menu,folder,folder_pidl,(LPCITEMIDLIST*)pdcm->apidl,pdcm->cidl,pdcm->aKeys,pdcm->cKeys,riid,ppv); IContextMenu_Release(system_menu); ILFree(folder_pidl); return ret; }
/************************************************************************** * CNetFolder::CreateViewObject */ HRESULT WINAPI CNetFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) { LPSHELLVIEW pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid (&riid), ppvOut); if (!ppvOut) return hr; *ppvOut = NULL; if (IsEqualIID(riid, IID_IDropTarget)) { WARN("IDropTarget not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, IID_IContextMenu)) { WARN("IContextMenu not implemented\n"); hr = E_NOTIMPL; } else if (IsEqualIID(riid, IID_IShellView)) { hr = IShellView_Constructor((IShellFolder *)this, &pShellView); if (pShellView) { hr = pShellView->QueryInterface(riid, ppvOut); pShellView->Release(); } } TRACE("-- (%p)->(interface=%p)\n", this, ppvOut); return hr; }
/************************************************************************** * CNetFolder::BindToObject */ HRESULT WINAPI CNetFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) { TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this, pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut); return SHELL32_BindToChild(pidlRoot, NULL, pidl, riid, ppvOut); }
/************************************************************************** * CPrinterFolder::CreateViewObject */ HRESULT WINAPI CPrinterFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { CComPtr<IShellView> pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid (&riid), ppvOut); if (!ppvOut) return hr; *ppvOut = NULL; if (IsEqualIID(riid, IID_IDropTarget)) { WARN("IDropTarget not implemented\n"); hr = E_NOTIMPL; } else if(IsEqualIID(riid, IID_IContextMenu)) { WARN("IContextMenu not implemented\n"); hr = E_NOTIMPL; } else if(IsEqualIID(riid, IID_IShellView)) { hr = CDefView_Constructor(this, riid, ppvOut); } TRACE ("-- (%p)->(interface=%p)\n", this, ppvOut); return hr; }
/************************************************************************** * AutoComplete_QueryInterface */ static HRESULT WINAPI IAutoComplete2_fnQueryInterface( IAutoComplete2 * iface, REFIID riid, LPVOID *ppvObj) { IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; TRACE("(%p)->(IID:%s,%p)\n", This, shdebugstr_guid(riid), ppvObj); *ppvObj = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IAutoComplete) || IsEqualIID(riid, &IID_IAutoComplete2)) { *ppvObj = This; } else if (IsEqualIID(riid, &IID_IAutoCompleteDropDown)) { *ppvObj = _IAutoCompleteDropDown_(This); } if (*ppvObj) { IUnknown_AddRef((IUnknown*)*ppvObj); TRACE("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); return S_OK; } WARN("unsupported interface: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
/************************************************************************** * ISF_Desktop_fnQueryInterface * */ static HRESULT WINAPI ISF_Desktop_fnQueryInterface( IShellFolder2 * iface, REFIID riid, LPVOID * ppvObj) { IDesktopFolderImpl *This = impl_from_IShellFolder2(iface); TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj); *ppvObj = NULL; if (IsEqualIID (riid, &IID_IUnknown) || IsEqualIID (riid, &IID_IShellFolder) || IsEqualIID (riid, &IID_IShellFolder2)) { *ppvObj = This; } else if (IsEqualIID (riid, &IID_IPersist) || IsEqualIID (riid, &IID_IPersistFolder) || IsEqualIID (riid, &IID_IPersistFolder2)) { *ppvObj = &This->IPersistFolder2_iface; } if (*ppvObj) { IUnknown_AddRef ((IUnknown *) (*ppvObj)); TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); return S_OK; } TRACE ("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; }
static HRESULT WINAPI ShellItem_QueryInterface(IShellItem2 *iface, REFIID riid, void **ppv) { ShellItem *This = impl_from_IShellItem2(iface); TRACE("(%p,%p,%p)\n", iface, riid, ppv); if (!ppv) return E_INVALIDARG; if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IShellItem, riid) || IsEqualIID(&IID_IShellItem2, riid)) { *ppv = &This->IShellItem2_iface; } else if (IsEqualIID(&IID_IPersist, riid) || IsEqualIID(&IID_IPersistIDList, riid)) { *ppv = &This->IPersistIDList_iface; } else { FIXME("not implemented for %s\n", shdebugstr_guid(riid)); *ppv = NULL; return E_NOINTERFACE; } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
/************************************************************************** * CNetFolder::BindToStorage */ HRESULT WINAPI CNetFolder::BindToStorage(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) { FIXME("(%p)->(pidl=%p,%p,%s,%p) stub\n", this, pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut); *ppvOut = NULL; return E_NOTIMPL; }
static HRESULT WINAPI ShellItem2_GetPropertyStoreForKeys(IShellItem2 *iface, const PROPERTYKEY *rgKeys, UINT cKeys, GETPROPERTYSTOREFLAGS flags, REFIID riid, void **ppv) { ShellItem *This = impl_from_IShellItem2(iface); FIXME("Stub: %p (%p, %d, %08x, %s, %p)\n", This, rgKeys, cKeys, flags, shdebugstr_guid(riid), ppv); return E_NOTIMPL; }