/************************************************************************** * IAutoComplete_Constructor */ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IAutoCompleteImpl *lpac; HRESULT hr; if (pUnkOuter && !IsEqualIID (riid, &IID_IUnknown)) return CLASS_E_NOAGGREGATION; lpac = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAutoCompleteImpl)); if (!lpac) return E_OUTOFMEMORY; lpac->ref = 1; lpac->lpVtbl = &acvt; lpac->lpDropDownVtbl = &acdropdownvt; lpac->enabled = TRUE; lpac->options = ACO_AUTOAPPEND; hr = IUnknown_QueryInterface(_IUnknown_ (lpac), riid, ppv); IUnknown_Release(_IUnknown_ (lpac)); TRACE("-- (%p)->\n",lpac); return hr; }
/************************************************************************** * IAutoComplete_Constructor */ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { IAutoCompleteImpl *lpac; if (pUnkOuter && !IsEqualIID (riid, &IID_IUnknown)) return CLASS_E_NOAGGREGATION; lpac = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAutoCompleteImpl)); if (!lpac) return E_OUTOFMEMORY; lpac->ref = 1; lpac->lpVtbl = &acvt; lpac->lpvtblAutoComplete2 = &ac2vt; lpac->enabled = TRUE; lpac->enumstr = NULL; lpac->options = ACO_AUTOAPPEND; lpac->wpOrigEditProc = NULL; lpac->hwndListBox = NULL; lpac->txtbackup = NULL; lpac->quickComplete = NULL; if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (lpac), riid, ppv))) { IUnknown_Release (_IUnknown_ (lpac)); return E_NOINTERFACE; } TRACE("-- (%p)->\n",lpac); return S_OK; }
/************************************************************************** * 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_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; }
/************************************************************************** * 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_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 = (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->pidlRoot = _ILCreateNetHood(); /* 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; }
/************************************************************************ * ISFPersistFolder_Release */ static ULONG WINAPI ICPanel_PersistFolder2_Release(IPersistFolder2 * iface) { ICPanelImpl *This = impl_from_IPersistFolder2(iface); TRACE("(%p)->(count=%lu)\n", This, This->ref); return IUnknown_Release(_IUnknown_(This)); }
/************************************************************************ * ICPanel_PersistFolder2_QueryInterface */ static HRESULT WINAPI ICPanel_PersistFolder2_QueryInterface(IPersistFolder2 * iface, REFIID iid, LPVOID * ppvObject) { ICPanelImpl *This = impl_from_IPersistFolder2(iface); TRACE("(%p)\n", This); return IUnknown_QueryInterface(_IUnknown_(This), iid, ppvObject); }
/************************************************************************ * IPF_Printers_Release */ static ULONG WINAPI IPF_Printers_Release (IPersistFolder2 * iface) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)->(count=%lu)\n", This, This->ref); return IUnknown_Release (_IUnknown_ (This)); }
/************************************************************************ * ISF_Fonts_IContextMenu_Release */ static ULONG WINAPI ISF_Fonts_IContextMenu2_Release(IContextMenu2 * iface) { _ICOM_THIS_From_IContextMenu2FontItem(IGenericSFImpl, iface); TRACE("(%p)->(count=%u)\n", This, This->ref); return IUnknown_Release(_IUnknown_(This)); }
/************************************************************************ * ISF_Fonts_IContextMenu_QueryInterface */ static HRESULT WINAPI ISF_Fonts_IContextMenu2_QueryInterface(IContextMenu2 * iface, REFIID iid, LPVOID * ppvObject) { _ICOM_THIS_From_IContextMenu2FontItem(IGenericSFImpl, iface); TRACE("(%p)\n", This); return IUnknown_QueryInterface(_IUnknown_(This), iid, ppvObject); }
/************************************************************************ * INPFldr_PersistFolder2_AddRef */ static ULONG WINAPI INPFldr_PersistFolder2_AddRef (IPersistFolder2 * iface) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)->(count=%u)\n", This, This->ref); return IUnknown_AddRef (_IUnknown_ (This)); }
/************************************************************************ * IPF_Printers_QueryInterface */ static HRESULT WINAPI IPF_Printers_QueryInterface ( IPersistFolder2 * iface, REFIID iid, LPVOID * ppvObj) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)\n", This); return IUnknown_QueryInterface (_IUnknown_ (This), iid, ppvObj); }
/************************************************************************** * ISF_Desktop_Constructor */ HRESULT WINAPI ISF_Desktop_Constructor ( IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { static IGenericSFImpl *cached_sf; WCHAR szMyPath[MAX_PATH]; TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) return E_POINTER; if (pUnkOuter) return CLASS_E_NOAGGREGATION; if (!cached_sf) { IGenericSFImpl *sf; if (!SHGetSpecialFolderPathW( 0, szMyPath, CSIDL_DESKTOPDIRECTORY, TRUE )) return E_UNEXPECTED; sf = LocalAlloc( LMEM_ZEROINIT, sizeof (IGenericSFImpl) ); if (!sf) return E_OUTOFMEMORY; sf->ref = 1; sf->lpVtbl = &vt_MCFldr_ShellFolder2; sf->lpPF2 = &vt_FSFldr_PersistFolder2; sf->lpvtblSFHelper = &vt_FSFldr_ISFHelper; sf->pidlRoot = _ILCreateDesktop(); /* my qualified pidl */ sf->sPathTarget = SHAlloc( (wcslen(szMyPath) + 1)*sizeof(WCHAR) ); wcscpy( sf->sPathTarget, szMyPath ); if (InterlockedCompareExchangePointer((void *)&cached_sf, sf, NULL) != NULL) { /* some other thread already been here */ SHFree( sf->pidlRoot ); SHFree( sf->sPathTarget ); LocalFree( sf ); } } return IUnknown_QueryInterface( _IUnknown_(cached_sf), riid, ppv ); }