From d68294f06fb5642950c8331ebf99a7a265c3b027 Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Wed, 23 Feb 2005 15:41:39 +0000 Subject: [PATCH] Remove tabs and reformat. --- dlls/shell32/shfldr_mycomp.c | 758 ++++++++++++++++++++--------------- dlls/shell32/shlfsbind.c | 244 +++++------ 2 files changed, 548 insertions(+), 454 deletions(-) diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c index cacfcfbd68c..70df9bdb1b3 100644 --- a/dlls/shell32/shfldr_mycomp.c +++ b/dlls/shell32/shfldr_mycomp.c @@ -1,9 +1,8 @@ - /* - * Virtual Workplace folder + * Virtual Workplace folder * - * Copyright 1997 Marcus Meissner - * Copyright 1998, 1999, 2002 Juergen Schmied + * Copyright 1997 Marcus Meissner + * Copyright 1998, 1999, 2002 Juergen Schmied * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -61,8 +60,8 @@ typedef struct { IPersistFolder2Vtbl *lpVtblPersistFolder2; /* both paths are parsible from the desktop */ - LPITEMIDLIST pidlRoot; /* absolute pidl */ - int dwAttributes; /* attributes returned by GetAttributesOf FIXME: use it */ + LPITEMIDLIST pidlRoot; /* absolute pidl */ + int dwAttributes; /* attributes returned by GetAttributesOf FIXME: use it */ } IGenericSFImpl; static struct IShellFolder2Vtbl vt_ShellFolder2; @@ -74,13 +73,13 @@ static struct IPersistFolder2Vtbl vt_PersistFolder2; /* converts This to a interface pointer */ -#define _IUnknown_(This) (IUnknown*)&(This->lpVtbl) -#define _IShellFolder_(This) (IShellFolder*)&(This->lpVtbl) -#define _IShellFolder2_(This) (IShellFolder2*)&(This->lpVtbl) +#define _IUnknown_(This) (IUnknown*)&(This->lpVtbl) +#define _IShellFolder_(This) (IShellFolder*)&(This->lpVtbl) +#define _IShellFolder2_(This) (IShellFolder2*)&(This->lpVtbl) -#define _IPersist_(This) (IPersist*)&(This->lpVtblPersistFolder2) -#define _IPersistFolder_(This) (IPersistFolder*)&(This->lpVtblPersistFolder2) -#define _IPersistFolder2_(This) (IPersistFolder2*)&(This->lpVtblPersistFolder2) +#define _IPersist_(This) (IPersist*)&(This->lpVtblPersistFolder2) +#define _IPersistFolder_(This) (IPersistFolder*)&(This->lpVtblPersistFolder2) +#define _IPersistFolder2_(This) (IPersistFolder2*)&(This->lpVtblPersistFolder2) /*********************************************************************** * IShellFolder [MyComputer] implementation @@ -96,7 +95,7 @@ static shvheader MyComputerSFHeader[] = { #define MYCOMPUTERSHELLVIEWCOLUMNS 4 /************************************************************************** -* ISF_MyComputer_Constructor +* ISF_MyComputer_Constructor */ HRESULT WINAPI ISF_MyComputer_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) { @@ -105,22 +104,23 @@ HRESULT WINAPI ISF_MyComputer_Constructor (IUnknown * pUnkOuter, REFIID riid, LP TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid)); if (!ppv) - return E_POINTER; + return E_POINTER; if (pUnkOuter) - return CLASS_E_NOAGGREGATION; + return CLASS_E_NOAGGREGATION; - sf = (IGenericSFImpl *) LocalAlloc (GMEM_ZEROINIT, sizeof (IGenericSFImpl)); + sf = LocalAlloc (GMEM_ZEROINIT, sizeof (IGenericSFImpl)); if (!sf) - return E_OUTOFMEMORY; + return E_OUTOFMEMORY; sf->ref = 0; sf->lpVtbl = &vt_ShellFolder2; sf->lpVtblPersistFolder2 = &vt_PersistFolder2; - sf->pidlRoot = _ILCreateMyComputer (); /* my qualified pidl */ + sf->pidlRoot = _ILCreateMyComputer (); /* my qualified pidl */ - if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (sf), riid, ppv))) { - IUnknown_Release (_IUnknown_ (sf)); - return E_NOINTERFACE; + if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (sf), riid, ppv))) + { + IUnknown_Release (_IUnknown_ (sf)); + return E_NOINTERFACE; } TRACE ("--(%p)\n", sf); @@ -128,11 +128,12 @@ HRESULT WINAPI ISF_MyComputer_Constructor (IUnknown * pUnkOuter, REFIID riid, LP } /************************************************************************** - * ISF_MyComputer_fnQueryInterface + * ISF_MyComputer_fnQueryInterface * * NOTES supports not IPersist/IPersistFolder */ -static HRESULT WINAPI ISF_MyComputer_fnQueryInterface (IShellFolder2 * iface, REFIID riid, LPVOID * ppvObj) +static HRESULT WINAPI ISF_MyComputer_fnQueryInterface (IShellFolder2 *iface, + REFIID riid, LPVOID *ppvObj) { IGenericSFImpl *This = (IGenericSFImpl *)iface; @@ -141,17 +142,23 @@ static HRESULT WINAPI ISF_MyComputer_fnQueryInterface (IShellFolder2 * iface, RE *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 = _IPersistFolder2_ (This); + 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 = _IPersistFolder2_ (This); } - if (*ppvObj) { - IUnknown_AddRef ((IUnknown *) (*ppvObj)); - TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); - return S_OK; + if (*ppvObj) + { + IUnknown_AddRef ((IUnknown *) (*ppvObj)); + TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); + return S_OK; } TRACE ("-- Interface: E_NOINTERFACE\n"); return E_NOINTERFACE; @@ -174,7 +181,8 @@ static ULONG WINAPI ISF_MyComputer_fnRelease (IShellFolder2 * iface) TRACE ("(%p)->(count=%lu)\n", This, refCount + 1); - if (!refCount) { + if (!refCount) + { TRACE ("-- destroying IShellFolder(%p)\n", This); if (This->pidlRoot) SHFree (This->pidlRoot); @@ -184,51 +192,56 @@ static ULONG WINAPI ISF_MyComputer_fnRelease (IShellFolder2 * iface) } /************************************************************************** -* ISF_MyComputer_fnParseDisplayName +* ISF_MyComputer_fnParseDisplayName */ -static HRESULT WINAPI -ISF_MyComputer_fnParseDisplayName (IShellFolder2 * iface, - HWND hwndOwner, - LPBC pbc, - LPOLESTR lpszDisplayName, - DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes) +static HRESULT WINAPI ISF_MyComputer_fnParseDisplayName (IShellFolder2 *iface, + HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, + DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - HRESULT hr = E_INVALIDARG; LPCWSTR szNext = NULL; WCHAR szElement[MAX_PATH]; LPITEMIDLIST pidlTemp = NULL; CLSID clsid; - TRACE ("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n", - This, hwndOwner, pbc, lpszDisplayName, debugstr_w (lpszDisplayName), pchEaten, ppidl, pdwAttributes); + TRACE("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n", This, + hwndOwner, pbc, lpszDisplayName, debugstr_w (lpszDisplayName), + pchEaten, ppidl, pdwAttributes); *ppidl = 0; if (pchEaten) - *pchEaten = 0; /* strange but like the original */ + *pchEaten = 0; /* strange but like the original */ /* handle CLSID paths */ - if (lpszDisplayName[0] == ':' && lpszDisplayName[1] == ':') { - szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH); - TRACE ("-- element: %s\n", debugstr_w (szElement)); - SHCLSIDFromStringW (szElement + 2, &clsid); - pidlTemp = _ILCreateGuid (PT_GUID, &clsid); + if (lpszDisplayName[0] == ':' && lpszDisplayName[1] == ':') + { + szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH); + TRACE ("-- element: %s\n", debugstr_w (szElement)); + SHCLSIDFromStringW (szElement + 2, &clsid); + pidlTemp = _ILCreateGuid (PT_GUID, &clsid); } /* do we have an absolute path name ? */ - else if (PathGetDriveNumberW (lpszDisplayName) >= 0 && lpszDisplayName[2] == (WCHAR) '\\') { - szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH); - szElement[0] = toupper(szElement[0]); /* make drive letter uppercase to enable PIDL comparison */ - pidlTemp = _ILCreateDrive (szElement); + else if (PathGetDriveNumberW (lpszDisplayName) >= 0 && + lpszDisplayName[2] == (WCHAR) '\\') + { + szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH); + /* make drive letter uppercase to enable PIDL comparison */ + szElement[0] = toupper(szElement[0]); + pidlTemp = _ILCreateDrive (szElement); } - if (szNext && *szNext) { - hr = SHELL32_ParseNextElement (iface, hwndOwner, pbc, &pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes); - } else { - if (pdwAttributes && *pdwAttributes) { - SHELL32_GetItemAttributes (_IShellFolder_ (This), pidlTemp, pdwAttributes); - } - hr = S_OK; + if (szNext && *szNext) + { + hr = SHELL32_ParseNextElement (iface, hwndOwner, pbc, &pidlTemp, + (LPOLESTR) szNext, pchEaten, pdwAttributes); + } + else + { + if (pdwAttributes && *pdwAttributes) + SHELL32_GetItemAttributes (_IShellFolder_ (This), + pidlTemp, pdwAttributes); + hr = S_OK; } *ppidl = pidlTemp; @@ -247,12 +260,14 @@ static BOOL CreateMyCompEnumList(IEnumIDList *list, DWORD dwFlags) TRACE("(%p)->(flags=0x%08lx) \n",list,dwFlags); - /*enumerate the folders*/ - if(dwFlags & SHCONTF_FOLDERS) + /* enumerate the folders */ + if (dwFlags & SHCONTF_FOLDERS) { WCHAR wszDriveName[] = {'A', ':', '\\', '\0'}; DWORD dwDrivemap = GetLogicalDrives(); HKEY hkey; + char *szkey = "SOFTWARE\\Microsoft\\Windows\\" + "CurrentVersion\\explorer\\mycomputer\\NameSpace"; while (ret && wszDriveName[0]<='Z') { @@ -263,27 +278,26 @@ static BOOL CreateMyCompEnumList(IEnumIDList *list, DWORD dwFlags) } TRACE("-- (%p)-> enumerate (mycomputer shell extensions)\n",list); - if (ret && !RegOpenKeyExA(HKEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\mycomputer\\NameSpace", - 0, KEY_READ, &hkey)) + if (ret && !RegOpenKeyExA(HKEY_LOCAL_MACHINE, szkey, 0, KEY_READ, &hkey)) { char iid[50]; int i=0; while (ret) { - DWORD size = sizeof (iid); - LONG apiRet = RegEnumKeyExA(hkey, i, iid, &size, 0, NULL, NULL, - NULL); + DWORD size; + LONG r; - if (ERROR_SUCCESS == apiRet) + size = sizeof (iid); + r = RegEnumKeyExA(hkey, i, iid, &size, 0, NULL, NULL, NULL); + if (ERROR_SUCCESS == r) { /* FIXME: shell extensions, shouldn't the type be * PT_SHELLEXT? */ ret = AddToEnumList(list, _ILCreateGuidFromStrA(iid)); i++; } - else if (ERROR_NO_MORE_ITEMS == apiRet) + else if (ERROR_NO_MORE_ITEMS == r) break; else ret = FALSE; @@ -295,14 +309,15 @@ static BOOL CreateMyCompEnumList(IEnumIDList *list, DWORD dwFlags) } /************************************************************************** -* ISF_MyComputer_fnEnumObjects +* ISF_MyComputer_fnEnumObjects */ -static HRESULT WINAPI -ISF_MyComputer_fnEnumObjects (IShellFolder2 * iface, HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST * ppEnumIDList) +static HRESULT WINAPI ISF_MyComputer_fnEnumObjects (IShellFolder2 *iface, + HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - TRACE ("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n", This, hwndOwner, dwFlags, ppEnumIDList); + TRACE("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n", This, + hwndOwner, dwFlags, ppEnumIDList); *ppEnumIDList = IEnumIDList_Constructor(); if (*ppEnumIDList) @@ -314,43 +329,42 @@ ISF_MyComputer_fnEnumObjects (IShellFolder2 * iface, HWND hwndOwner, DWORD dwFla } /************************************************************************** -* ISF_MyComputer_fnBindToObject +* ISF_MyComputer_fnBindToObject */ -static HRESULT WINAPI -ISF_MyComputer_fnBindToObject (IShellFolder2 * iface, LPCITEMIDLIST pidl, - LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) +static HRESULT WINAPI ISF_MyComputer_fnBindToObject (IShellFolder2 *iface, + LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", This, pidl, pbcReserved, shdebugstr_guid (riid), ppvOut); + TRACE("(%p)->(pidl=%p,%p,%s,%p)\n", This, + pidl, pbcReserved, shdebugstr_guid (riid), ppvOut); return SHELL32_BindToChild (This->pidlRoot, NULL, pidl, riid, ppvOut); } /************************************************************************** -* ISF_MyComputer_fnBindToStorage +* ISF_MyComputer_fnBindToStorage */ -static HRESULT WINAPI -ISF_MyComputer_fnBindToStorage (IShellFolder2 * iface, - LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) +static HRESULT WINAPI ISF_MyComputer_fnBindToStorage (IShellFolder2 * iface, + LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n", This, pidl, pbcReserved, shdebugstr_guid (riid), ppvOut); + FIXME("(%p)->(pidl=%p,%p,%s,%p) stub\n", This, + pidl, pbcReserved, shdebugstr_guid (riid), ppvOut); *ppvOut = NULL; return E_NOTIMPL; } /************************************************************************** -* ISF_MyComputer_fnCompareIDs +* ISF_MyComputer_fnCompareIDs */ -static HRESULT WINAPI -ISF_MyComputer_fnCompareIDs (IShellFolder2 * iface, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) +static HRESULT WINAPI ISF_MyComputer_fnCompareIDs (IShellFolder2 *iface, + LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - int nReturn; TRACE ("(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n", This, lParam, pidl1, pidl2); @@ -360,34 +374,41 @@ ISF_MyComputer_fnCompareIDs (IShellFolder2 * iface, LPARAM lParam, LPCITEMIDLIST } /************************************************************************** -* ISF_MyComputer_fnCreateViewObject +* ISF_MyComputer_fnCreateViewObject */ -static HRESULT WINAPI -ISF_MyComputer_fnCreateViewObject (IShellFolder2 * iface, HWND hwndOwner, REFIID riid, LPVOID * ppvOut) +static HRESULT WINAPI ISF_MyComputer_fnCreateViewObject (IShellFolder2 *iface, + HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - LPSHELLVIEW pShellView; HRESULT hr = E_INVALIDARG; - TRACE ("(%p)->(hwnd=%p,%s,%p)\n", This, hwndOwner, shdebugstr_guid (riid), ppvOut); + TRACE("(%p)->(hwnd=%p,%s,%p)\n", This, + hwndOwner, shdebugstr_guid (riid), ppvOut); - if (ppvOut) { - *ppvOut = NULL; + if (!ppvOut) + return hr; - 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); - } - } + *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; @@ -396,26 +417,26 @@ ISF_MyComputer_fnCreateViewObject (IShellFolder2 * iface, HWND hwndOwner, REFIID /************************************************************************** * ISF_MyComputer_fnGetAttributesOf */ -static HRESULT WINAPI -ISF_MyComputer_fnGetAttributesOf (IShellFolder2 * iface, UINT cidl, LPCITEMIDLIST * apidl, DWORD * rgfInOut) +static HRESULT WINAPI ISF_MyComputer_fnGetAttributesOf (IShellFolder2 * iface, + UINT cidl, LPCITEMIDLIST * apidl, DWORD * rgfInOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - HRESULT hr = S_OK; TRACE ("(%p)->(cidl=%d apidl=%p mask=0x%08lx)\n", This, cidl, apidl, *rgfInOut); - if ((!cidl) || (!apidl) || (!rgfInOut)) - return E_INVALIDARG; + if (!cidl || !apidl || !rgfInOut) + return E_INVALIDARG; if (*rgfInOut == 0) - *rgfInOut = ~0; + *rgfInOut = ~0; - while (cidl > 0 && *apidl) { - pdump (*apidl); - SHELL32_GetItemAttributes (_IShellFolder_ (This), *apidl, rgfInOut); - apidl++; - cidl--; + while (cidl > 0 && *apidl) + { + pdump (*apidl); + SHELL32_GetItemAttributes (_IShellFolder_ (This), *apidl, rgfInOut); + apidl++; + cidl--; } TRACE ("-- result=0x%08lx\n", *rgfInOut); @@ -423,21 +444,20 @@ ISF_MyComputer_fnGetAttributesOf (IShellFolder2 * iface, UINT cidl, LPCITEMIDLIS } /************************************************************************** -* ISF_MyComputer_fnGetUIObjectOf +* ISF_MyComputer_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 +* hwndOwner [in] Parent window for any output +* cidl [in] array size +* apidl [in] simple pidl array +* riid [in] Requested Interface +* prgfInOut [ ] reserved +* ppvObject [out] Resulting Interface * */ -static HRESULT WINAPI -ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * iface, - HWND hwndOwner, - UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) +static HRESULT WINAPI ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * iface, + HWND hwndOwner, UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, + UINT * prgfInOut, LPVOID * ppvOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; @@ -445,57 +465,72 @@ ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * 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); + TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", This, + hwndOwner, cidl, apidl, shdebugstr_guid (riid), prgfInOut, ppvOut); - if (ppvOut) { - *ppvOut = NULL; + if (!ppvOut) + return hr; - if (IsEqualIID (riid, &IID_IContextMenu) && (cidl >= 1)) { - pObj = (LPUNKNOWN) ISvItemCm_Constructor ((IShellFolder *) iface, This->pidlRoot, apidl, cidl); - hr = S_OK; - } else if (IsEqualIID (riid, &IID_IDataObject) && (cidl >= 1)) { - pObj = (LPUNKNOWN) IDataObject_Constructor (hwndOwner, This->pidlRoot, apidl, cidl); - hr = S_OK; - } else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1)) { - pidl = ILCombine (This->pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); - SHFree (pidl); - hr = S_OK; - } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { - pidl = ILCombine (This->pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); - SHFree (pidl); - hr = S_OK; - } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) { - hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj); - } else if ((IsEqualIID(riid,&IID_IShellLinkW) || IsEqualIID(riid,&IID_IShellLinkA)) - && (cidl == 1)) { - pidl = ILCombine (This->pidlRoot, apidl[0]); - hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj); - SHFree (pidl); - } else { - hr = E_NOINTERFACE; - } + *ppvOut = NULL; - if (SUCCEEDED(hr) && !pObj) - hr = E_OUTOFMEMORY; - - *ppvOut = pObj; + if (IsEqualIID (riid, &IID_IContextMenu) && (cidl >= 1)) + { + pObj = (LPUNKNOWN) ISvItemCm_Constructor ((IShellFolder *) iface, + This->pidlRoot, apidl, cidl); + hr = S_OK; } + else if (IsEqualIID (riid, &IID_IDataObject) && (cidl >= 1)) + { + pObj = (LPUNKNOWN) IDataObject_Constructor (hwndOwner, + This->pidlRoot, apidl, cidl); + hr = S_OK; + } + else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1)) + { + pidl = ILCombine (This->pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + SHFree (pidl); + hr = S_OK; + } + else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) + { + pidl = ILCombine (This->pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + SHFree (pidl); + hr = S_OK; + } + else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) + { + hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, + (LPVOID *) &pObj); + } + else if ((IsEqualIID(riid,&IID_IShellLinkW) || + IsEqualIID(riid,&IID_IShellLinkA)) && (cidl == 1)) + { + pidl = ILCombine (This->pidlRoot, apidl[0]); + hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*) &pObj); + SHFree (pidl); + } + else + hr = E_NOINTERFACE; + + if (SUCCEEDED(hr) && !pObj) + hr = E_OUTOFMEMORY; + + *ppvOut = pObj; TRACE ("(%p)->hr=0x%08lx\n", This, hr); return hr; } /************************************************************************** -* ISF_MyComputer_fnGetDisplayNameOf +* ISF_MyComputer_fnGetDisplayNameOf */ -static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf (IShellFolder2 * iface, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet) +static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf (IShellFolder2 *iface, + LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - char szPath[MAX_PATH], - szDrive[18]; + char szPath[MAX_PATH], szDrive[18]; int len = 0; BOOL bSimplePidl; HRESULT hr = S_OK; @@ -504,98 +539,131 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf (IShellFolder2 * iface, pdump (pidl); if (!strRet) - return E_INVALIDARG; + return E_INVALIDARG; szPath[0] = 0x00; szDrive[0] = 0x00; bSimplePidl = _ILIsPidlSimple (pidl); - if (!pidl->mkid.cb) { - /* parsing name like ::{...} */ - lstrcpyA (szPath, "::"); - SHELL32_GUIDToStringA(&CLSID_MyComputer, &szPath[2]); - } else if (_ILIsSpecialFolder (pidl)) { - /* take names of special folders only if its only this folder */ - if (bSimplePidl) { - GUID const *clsid; + if (!pidl->mkid.cb) + { + /* parsing name like ::{...} */ + lstrcpyA (szPath, "::"); + SHELL32_GUIDToStringA(&CLSID_MyComputer, &szPath[2]); + } + else if (_ILIsSpecialFolder (pidl)) + { + /* take names of special folders only if its only this folder */ + if (bSimplePidl) + { + GUID const *clsid; - if ((clsid = _ILGetGUIDPointer (pidl))) { - if (GET_SHGDN_FOR (dwFlags) == SHGDN_FORPARSING) { - int bWantsForParsing; + clsid = _ILGetGUIDPointer (pidl); + if (clsid) + { + if (GET_SHGDN_FOR (dwFlags) == SHGDN_FORPARSING) + { + int bWantsForParsing = FALSE; + char szRegPath[100]; + LONG r; - /* - * we can only get a filesystem path from a shellfolder if the value WantsFORPARSING in - * CLSID\\{...}\\shellfolder exists - * exception: the MyComputer folder has this keys not but like any filesystem backed - * folder it needs these behaviour - */ - /* get the "WantsFORPARSING" flag from the registry */ - char szRegPath[100]; + /* + * We can only get a filesystem path from a shellfolder + * if the value WantsFORPARSING exists in + * CLSID\\{...}\\shellfolder + * exception: the MyComputer folder has this keys not + * but like any filesystem backed + * folder it needs these behaviour + * + * Get the "WantsFORPARSING" flag from the registry + */ - lstrcpyA (szRegPath, "CLSID\\"); - SHELL32_GUIDToStringA (clsid, &szRegPath[6]); - lstrcatA (szRegPath, "\\shellfolder"); - bWantsForParsing = - (ERROR_SUCCESS == - SHGetValueA (HKEY_CLASSES_ROOT, szRegPath, "WantsFORPARSING", NULL, NULL, NULL)); + lstrcpyA (szRegPath, "CLSID\\"); + SHELL32_GUIDToStringA (clsid, &szRegPath[6]); + lstrcatA (szRegPath, "\\shellfolder"); + r = SHGetValueA (HKEY_CLASSES_ROOT, szRegPath, + "WantsFORPARSING", NULL, NULL, NULL); + if (r == ERROR_SUCCESS) + bWantsForParsing = TRUE; - if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) && bWantsForParsing) { - /* we need the filesystem path to the destination folder. Only the folder itself can know it */ - hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags, szPath, MAX_PATH); - } else { - LPSTR p; + if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) && + bWantsForParsing) + { + /* + * We need the filesystem path to the destination folder + * Only the folder itself can know it + */ + hr = SHELL32_GetDisplayNameOfChild (iface, pidl, + dwFlags, szPath, MAX_PATH); + } + else + { + LPSTR p; - /* parsing name like ::{...} */ - p = lstrcpyA(szPath, "::") + 2; - p += SHELL32_GUIDToStringA(&CLSID_MyComputer, p); + /* parsing name like ::{...} */ + p = lstrcpyA(szPath, "::") + 2; + p += SHELL32_GUIDToStringA(&CLSID_MyComputer, p); - lstrcatA(p, "\\::"); - p += 3; - SHELL32_GUIDToStringA(clsid, p); - } - } else { - /* user friendly name */ - HCR_GetClassNameA (clsid, szPath, MAX_PATH); - } - } else - _ILSimpleGetText (pidl, szPath, MAX_PATH); /* append my own path */ - } else { - FIXME ("special folder\n"); - } - } else { - if (!_ILIsDrive (pidl)) { - ERR ("Wrong pidl type\n"); - return E_INVALIDARG; - } + lstrcatA(p, "\\::"); + p += 3; + SHELL32_GUIDToStringA(clsid, p); + } + } + else + { + /* user friendly name */ + HCR_GetClassNameA (clsid, szPath, MAX_PATH); + } + } + else + { + /* append my own path */ + _ILSimpleGetText (pidl, szPath, MAX_PATH); + } + } + else + FIXME ("special folder\n"); + } + else + { + if (!_ILIsDrive (pidl)) + { + ERR ("Wrong pidl type\n"); + return E_INVALIDARG; + } - _ILSimpleGetText (pidl, szPath, MAX_PATH); /* append my own path */ + _ILSimpleGetText (pidl, szPath, MAX_PATH); /* append my own path */ - /* long view "lw_name (C:)" */ - if (bSimplePidl && !(dwFlags & SHGDN_FORPARSING)) { - DWORD dwVolumeSerialNumber, - dwMaximumComponetLength, - dwFileSystemFlags; + /* long view "lw_name (C:)" */ + if (bSimplePidl && !(dwFlags & SHGDN_FORPARSING)) + { + DWORD dwVolumeSerialNumber, dwMaximumComponetLength, dwFileSystemFlags; - GetVolumeInformationA (szPath, szDrive, sizeof (szDrive) - 6, &dwVolumeSerialNumber, - &dwMaximumComponetLength, &dwFileSystemFlags, NULL, 0); - strcat (szDrive, " ("); - strncat (szDrive, szPath, 2); - strcat (szDrive, ")"); - strcpy (szPath, szDrive); - } + GetVolumeInformationA (szPath, szDrive, sizeof (szDrive) - 6, + &dwVolumeSerialNumber, + &dwMaximumComponetLength, &dwFileSystemFlags, NULL, 0); + strcat (szDrive, " ("); + strncat (szDrive, szPath, 2); + strcat (szDrive, ")"); + strcpy (szPath, szDrive); + } } - if (!bSimplePidl) { /* go deeper if needed */ - PathAddBackslashA (szPath); - len = strlen (szPath); + if (!bSimplePidl) + { + /* go deeper if needed */ + PathAddBackslashA (szPath); + len = strlen (szPath); - hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags | SHGDN_INFOLDER, szPath + len, MAX_PATH - len); + hr = SHELL32_GetDisplayNameOfChild (iface, pidl, + dwFlags | SHGDN_INFOLDER, szPath + len, MAX_PATH - len); } - if (SUCCEEDED (hr)) { - strRet->uType = STRRET_CSTR; - lstrcpynA (strRet->u.cStr, szPath, MAX_PATH); + if (SUCCEEDED (hr)) + { + strRet->uType = STRRET_CSTR; + lstrcpynA (strRet->u.cStr, szPath, MAX_PATH); } TRACE ("-- (%p)->(%s)\n", This, szPath); @@ -608,53 +676,64 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf (IShellFolder2 * iface, * identifier in the process. * * PARAMETERS -* HWND hwndOwner, //[in ] Owner window for output -* LPCITEMIDLIST pidl, //[in ] simple pidl of item to change -* LPCOLESTR lpszName, //[in ] the items new display name -* DWORD dwFlags, //[in ] SHGNO formatting flags -* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned +* hwndOwner [in] Owner window for output +* pidl [in] simple pidl of item to change +* lpszName [in] the items new display name +* dwFlags [in] SHGNO formatting flags +* ppidlOut [out] simple pidl returned */ -static HRESULT WINAPI ISF_MyComputer_fnSetNameOf (IShellFolder2 * iface, HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */ - LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut) +static HRESULT WINAPI ISF_MyComputer_fnSetNameOf ( + IShellFolder2 * iface, HWND hwndOwner, LPCITEMIDLIST pidl, + LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut) { IGenericSFImpl *This = (IGenericSFImpl *)iface; - FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut); + FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, + hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut); return E_FAIL; } -static HRESULT WINAPI ISF_MyComputer_fnGetDefaultSearchGUID (IShellFolder2 * iface, GUID * pguid) +static HRESULT WINAPI ISF_MyComputer_fnGetDefaultSearchGUID ( + IShellFolder2 * iface, GUID * pguid) { IGenericSFImpl *This = (IGenericSFImpl *)iface; FIXME ("(%p)\n", This); return E_NOTIMPL; } -static HRESULT WINAPI ISF_MyComputer_fnEnumSearches (IShellFolder2 * iface, IEnumExtraSearch ** ppenum) +static HRESULT WINAPI ISF_MyComputer_fnEnumSearches ( + IShellFolder2 * iface, IEnumExtraSearch ** ppenum) { IGenericSFImpl *This = (IGenericSFImpl *)iface; FIXME ("(%p)\n", This); return E_NOTIMPL; } -static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumn (IShellFolder2 * iface, DWORD dwRes, ULONG * pSort, ULONG * pDisplay) +static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumn ( + IShellFolder2 *iface, DWORD dwRes, ULONG *pSort, ULONG *pDisplay) { IGenericSFImpl *This = (IGenericSFImpl *)iface; TRACE ("(%p)\n", This); - if (pSort) *pSort = 0; - if (pDisplay) *pDisplay = 0; + if (pSort) + *pSort = 0; + if (pDisplay) + *pDisplay = 0; return S_OK; } -static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumnState (IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags) +static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumnState ( + IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags) { IGenericSFImpl *This = (IGenericSFImpl *)iface; TRACE ("(%p)\n", This); - if (!pcsFlags || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS) return E_INVALIDARG; + if (!pcsFlags || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS) + return E_INVALIDARG; *pcsFlags = MyComputerSFHeader[iColumn].pcsFlags; return S_OK; } -static HRESULT WINAPI ISF_MyComputer_fnGetDetailsEx (IShellFolder2 * iface, LPCITEMIDLIST pidl, const SHCOLUMNID * pscid, VARIANT * pv) + +static HRESULT WINAPI ISF_MyComputer_fnGetDetailsEx (IShellFolder2 * iface, + LPCITEMIDLIST pidl, const SHCOLUMNID * pscid, VARIANT * pv) { IGenericSFImpl *This = (IGenericSFImpl *)iface; FIXME ("(%p)\n", This); @@ -662,7 +741,8 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDetailsEx (IShellFolder2 * iface, LPCI } /* FIXME: drive size >4GB is rolling over */ -static HRESULT WINAPI ISF_MyComputer_fnGetDetailsOf (IShellFolder2 * iface, LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS * psd) +static HRESULT WINAPI ISF_MyComputer_fnGetDetailsOf (IShellFolder2 * iface, + LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS * psd) { IGenericSFImpl *This = (IGenericSFImpl *)iface; HRESULT hr; @@ -670,48 +750,58 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDetailsOf (IShellFolder2 * iface, LPCI TRACE ("(%p)->(%p %i %p)\n", This, pidl, iColumn, psd); if (!psd || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS) - return E_INVALIDARG; + return E_INVALIDARG; - if (!pidl) { - psd->fmt = MyComputerSFHeader[iColumn].fmt; - psd->cxChar = MyComputerSFHeader[iColumn].cxChar; - psd->str.uType = STRRET_CSTR; - LoadStringA (shell32_hInstance, MyComputerSFHeader[iColumn].colnameid, psd->str.u.cStr, MAX_PATH); - return S_OK; - } else { - char szPath[MAX_PATH]; - ULARGE_INTEGER ulBytes; + if (!pidl) + { + psd->fmt = MyComputerSFHeader[iColumn].fmt; + psd->cxChar = MyComputerSFHeader[iColumn].cxChar; + psd->str.uType = STRRET_CSTR; + LoadStringA (shell32_hInstance, MyComputerSFHeader[iColumn].colnameid, + psd->str.u.cStr, MAX_PATH); + return S_OK; + } + else + { + char szPath[MAX_PATH]; + ULARGE_INTEGER ulBytes; - psd->str.u.cStr[0] = 0x00; - psd->str.uType = STRRET_CSTR; - switch (iColumn) { - case 0: /* name */ - hr = IShellFolder_GetDisplayNameOf (iface, pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str); - break; - case 1: /* type */ - _ILGetFileType (pidl, psd->str.u.cStr, MAX_PATH); - break; - case 2: /* total size */ - if (_ILIsDrive (pidl)) { - _ILSimpleGetText (pidl, szPath, MAX_PATH); - GetDiskFreeSpaceExA (szPath, NULL, &ulBytes, NULL); - StrFormatByteSizeA (ulBytes.u.LowPart, psd->str.u.cStr, MAX_PATH); - } - break; - case 3: /* free size */ - if (_ILIsDrive (pidl)) { - _ILSimpleGetText (pidl, szPath, MAX_PATH); - GetDiskFreeSpaceExA (szPath, &ulBytes, NULL, NULL); - StrFormatByteSizeA (ulBytes.u.LowPart, psd->str.u.cStr, MAX_PATH); - } - break; - } - hr = S_OK; + psd->str.u.cStr[0] = 0x00; + psd->str.uType = STRRET_CSTR; + switch (iColumn) + { + case 0: /* name */ + hr = IShellFolder_GetDisplayNameOf (iface, pidl, + SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str); + break; + case 1: /* type */ + _ILGetFileType (pidl, psd->str.u.cStr, MAX_PATH); + break; + case 2: /* total size */ + if (_ILIsDrive (pidl)) + { + _ILSimpleGetText (pidl, szPath, MAX_PATH); + GetDiskFreeSpaceExA (szPath, NULL, &ulBytes, NULL); + StrFormatByteSizeA (ulBytes.u.LowPart, psd->str.u.cStr, MAX_PATH); + } + break; + case 3: /* free size */ + if (_ILIsDrive (pidl)) + { + _ILSimpleGetText (pidl, szPath, MAX_PATH); + GetDiskFreeSpaceExA (szPath, &ulBytes, NULL, NULL); + StrFormatByteSizeA (ulBytes.u.LowPart, psd->str.u.cStr, MAX_PATH); + } + break; + } + hr = S_OK; } return hr; } -static HRESULT WINAPI ISF_MyComputer_fnMapColumnToSCID (IShellFolder2 * iface, UINT column, SHCOLUMNID * pscid) + +static HRESULT WINAPI ISF_MyComputer_fnMapColumnToSCID ( + IShellFolder2 * iface, UINT column, SHCOLUMNID * pscid) { IGenericSFImpl *This = (IGenericSFImpl *)iface; FIXME ("(%p)\n", This); @@ -720,33 +810,34 @@ static HRESULT WINAPI ISF_MyComputer_fnMapColumnToSCID (IShellFolder2 * iface, U static IShellFolder2Vtbl vt_ShellFolder2 = { - ISF_MyComputer_fnQueryInterface, - ISF_MyComputer_fnAddRef, - ISF_MyComputer_fnRelease, - ISF_MyComputer_fnParseDisplayName, - ISF_MyComputer_fnEnumObjects, - ISF_MyComputer_fnBindToObject, - ISF_MyComputer_fnBindToStorage, - ISF_MyComputer_fnCompareIDs, - ISF_MyComputer_fnCreateViewObject, - ISF_MyComputer_fnGetAttributesOf, - ISF_MyComputer_fnGetUIObjectOf, - ISF_MyComputer_fnGetDisplayNameOf, - ISF_MyComputer_fnSetNameOf, - /* ShellFolder2 */ - ISF_MyComputer_fnGetDefaultSearchGUID, - ISF_MyComputer_fnEnumSearches, - ISF_MyComputer_fnGetDefaultColumn, - ISF_MyComputer_fnGetDefaultColumnState, - ISF_MyComputer_fnGetDetailsEx, - ISF_MyComputer_fnGetDetailsOf, - ISF_MyComputer_fnMapColumnToSCID + ISF_MyComputer_fnQueryInterface, + ISF_MyComputer_fnAddRef, + ISF_MyComputer_fnRelease, + ISF_MyComputer_fnParseDisplayName, + ISF_MyComputer_fnEnumObjects, + ISF_MyComputer_fnBindToObject, + ISF_MyComputer_fnBindToStorage, + ISF_MyComputer_fnCompareIDs, + ISF_MyComputer_fnCreateViewObject, + ISF_MyComputer_fnGetAttributesOf, + ISF_MyComputer_fnGetUIObjectOf, + ISF_MyComputer_fnGetDisplayNameOf, + ISF_MyComputer_fnSetNameOf, + /* ShellFolder2 */ + ISF_MyComputer_fnGetDefaultSearchGUID, + ISF_MyComputer_fnEnumSearches, + ISF_MyComputer_fnGetDefaultColumn, + ISF_MyComputer_fnGetDefaultColumnState, + ISF_MyComputer_fnGetDetailsEx, + ISF_MyComputer_fnGetDetailsOf, + ISF_MyComputer_fnMapColumnToSCID }; /************************************************************************ - * IMCFldr_PersistFolder2_QueryInterface + * IMCFldr_PersistFolder2_QueryInterface */ -static HRESULT WINAPI IMCFldr_PersistFolder2_QueryInterface (IPersistFolder2 * iface, REFIID iid, LPVOID * ppvObj) +static HRESULT WINAPI IMCFldr_PersistFolder2_QueryInterface ( + IPersistFolder2 * iface, REFIID iid, LPVOID * ppvObj) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); @@ -756,7 +847,7 @@ static HRESULT WINAPI IMCFldr_PersistFolder2_QueryInterface (IPersistFolder2 * i } /************************************************************************ - * IMCFldr_PersistFolder2_AddRef + * IMCFldr_PersistFolder2_AddRef */ static ULONG WINAPI IMCFldr_PersistFolder2_AddRef (IPersistFolder2 * iface) { @@ -768,7 +859,7 @@ static ULONG WINAPI IMCFldr_PersistFolder2_AddRef (IPersistFolder2 * iface) } /************************************************************************ - * ISFPersistFolder_Release + * ISFPersistFolder_Release */ static ULONG WINAPI IMCFldr_PersistFolder2_Release (IPersistFolder2 * iface) { @@ -780,27 +871,29 @@ static ULONG WINAPI IMCFldr_PersistFolder2_Release (IPersistFolder2 * iface) } /************************************************************************ - * IMCFldr_PersistFolder2_GetClassID + * IMCFldr_PersistFolder2_GetClassID */ -static HRESULT WINAPI IMCFldr_PersistFolder2_GetClassID (IPersistFolder2 * iface, CLSID * lpClassId) +static HRESULT WINAPI IMCFldr_PersistFolder2_GetClassID ( + IPersistFolder2 * iface, CLSID * lpClassId) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)\n", This); if (!lpClassId) - return E_POINTER; + return E_POINTER; *lpClassId = CLSID_MyComputer; return S_OK; } /************************************************************************ - * IMCFldr_PersistFolder2_Initialize + * IMCFldr_PersistFolder2_Initialize * * NOTES: it makes no sense to change the pidl */ -static HRESULT WINAPI IMCFldr_PersistFolder2_Initialize (IPersistFolder2 * iface, LPCITEMIDLIST pidl) +static HRESULT WINAPI IMCFldr_PersistFolder2_Initialize ( + IPersistFolder2 * iface, LPCITEMIDLIST pidl) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)->(%p)\n", This, pidl); @@ -808,26 +901,27 @@ static HRESULT WINAPI IMCFldr_PersistFolder2_Initialize (IPersistFolder2 * iface } /************************************************************************** - * IPersistFolder2_fnGetCurFolder + * IPersistFolder2_fnGetCurFolder */ -static HRESULT WINAPI IMCFldr_PersistFolder2_GetCurFolder (IPersistFolder2 * iface, LPITEMIDLIST * pidl) +static HRESULT WINAPI IMCFldr_PersistFolder2_GetCurFolder ( + IPersistFolder2 * iface, LPITEMIDLIST * pidl) { _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface); TRACE ("(%p)->(%p)\n", This, pidl); if (!pidl) - return E_POINTER; + return E_POINTER; *pidl = ILClone (This->pidlRoot); return S_OK; } static IPersistFolder2Vtbl vt_PersistFolder2 = { - IMCFldr_PersistFolder2_QueryInterface, - IMCFldr_PersistFolder2_AddRef, - IMCFldr_PersistFolder2_Release, - IMCFldr_PersistFolder2_GetClassID, - IMCFldr_PersistFolder2_Initialize, - IMCFldr_PersistFolder2_GetCurFolder + IMCFldr_PersistFolder2_QueryInterface, + IMCFldr_PersistFolder2_AddRef, + IMCFldr_PersistFolder2_Release, + IMCFldr_PersistFolder2_GetClassID, + IMCFldr_PersistFolder2_Initialize, + IMCFldr_PersistFolder2_GetCurFolder }; diff --git a/dlls/shell32/shlfsbind.c b/dlls/shell32/shlfsbind.c index b558aeab3e1..17ff2301948 100644 --- a/dlls/shell32/shlfsbind.c +++ b/dlls/shell32/shlfsbind.c @@ -42,16 +42,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(pidl); */ typedef struct { - IFileSystemBindDataVtbl *lpVtbl; - DWORD ref; - WIN32_FIND_DATAW findFile; + IFileSystemBindDataVtbl *lpVtbl; + DWORD ref; + WIN32_FIND_DATAW findFile; } IFileSystemBindDataImpl; -static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *iface, REFIID riid, LPVOID* ppvObj); -static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface); -static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface); -static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd); -static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd); +static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *, REFIID, LPVOID*); +static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *); +static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *); +static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *, WIN32_FIND_DATAW *); +static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *, const WIN32_FIND_DATAW *); static struct IFileSystemBindDataVtbl sbvt = { @@ -62,165 +62,165 @@ static struct IFileSystemBindDataVtbl sbvt = IFileSystemBindData_fnGetFindData, }; -static const WCHAR wFileSystemBindData[] = {'F','i','l','e',' ','S','y','s','t','e','m',' ','B','i','n','d','D','a','t','a',0}; +static const WCHAR wFileSystemBindData[] = { + 'F','i','l','e',' ','S','y','s','t','e','m',' ','B','i','n','d','D','a','t','a',0}; HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV) { - IFileSystemBindDataImpl *sb; - HRESULT ret = E_OUTOFMEMORY; + IFileSystemBindDataImpl *sb; + HRESULT ret = E_OUTOFMEMORY; - TRACE("%p, %p\n", pfd, ppV); + TRACE("%p, %p\n", pfd, ppV); - if (!ppV) - return E_INVALIDARG; + if (!ppV) + return E_INVALIDARG; - *ppV = NULL; + *ppV = NULL; - sb = (IFileSystemBindDataImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IFileSystemBindDataImpl)); - if (!sb) - return ret; + sb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IFileSystemBindDataImpl)); + if (!sb) + return ret; - sb->lpVtbl = &sbvt; - sb->ref = 1; - IFileSystemBindData_fnSetFindData((IFileSystemBindData*)sb, pfd); + sb->lpVtbl = &sbvt; + sb->ref = 1; + IFileSystemBindData_fnSetFindData((IFileSystemBindData*)sb, pfd); - ret = CreateBindCtx(0, ppV); - if (SUCCEEDED(ret)) - { - BIND_OPTS bindOpts; - bindOpts.cbStruct = sizeof(BIND_OPTS); - bindOpts.grfFlags = 0; - bindOpts.grfMode = STGM_CREATE; - bindOpts.dwTickCountDeadline = 0; - IBindCtx_SetBindOptions(*ppV, &bindOpts); - IBindCtx_RegisterObjectParam(*ppV, (LPOLESTR)wFileSystemBindData, (LPUNKNOWN)sb); + ret = CreateBindCtx(0, ppV); + if (SUCCEEDED(ret)) + { + BIND_OPTS bindOpts; - IFileSystemBindData_Release((IFileSystemBindData*)sb); - } - else - HeapFree(GetProcessHeap(), 0, sb); - return ret; + bindOpts.cbStruct = sizeof(BIND_OPTS); + bindOpts.grfFlags = 0; + bindOpts.grfMode = STGM_CREATE; + bindOpts.dwTickCountDeadline = 0; + IBindCtx_SetBindOptions(*ppV, &bindOpts); + IBindCtx_RegisterObjectParam(*ppV, (LPOLESTR)wFileSystemBindData, (LPUNKNOWN)sb); + + IFileSystemBindData_Release((IFileSystemBindData*)sb); + } + else + HeapFree(GetProcessHeap(), 0, sb); + return ret; } HRESULT WINAPI FileSystemBindData_GetFindData(LPBC pbc, WIN32_FIND_DATAW *pfd) { - LPUNKNOWN pUnk; - IFileSystemBindData *pfsbd = NULL; - HRESULT ret; + LPUNKNOWN pUnk; + IFileSystemBindData *pfsbd = NULL; + HRESULT ret; - TRACE("%p, %p\n", pbc, pfd); + TRACE("%p, %p\n", pbc, pfd); - if (!pfd) - return E_INVALIDARG; + if (!pfd) + return E_INVALIDARG; - ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk); - if (SUCCEEDED(ret)) - { - ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd); - if (SUCCEEDED(ret)) - { - ret = IFileSystemBindData_GetFindData(pfsbd, pfd); - IFileSystemBindData_Release(pfsbd); - } - IUnknown_Release(pUnk); - } - return ret; + ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk); + if (SUCCEEDED(ret)) + { + ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd); + if (SUCCEEDED(ret)) + { + ret = IFileSystemBindData_GetFindData(pfsbd, pfd); + IFileSystemBindData_Release(pfsbd); + } + IUnknown_Release(pUnk); + } + return ret; } HRESULT WINAPI FileSystemBindData_SetFindData(LPBC pbc, const WIN32_FIND_DATAW *pfd) { - LPUNKNOWN pUnk; - IFileSystemBindData *pfsbd = NULL; - HRESULT ret; - - TRACE("%p, %p\n", pbc, pfd); + LPUNKNOWN pUnk; + IFileSystemBindData *pfsbd = NULL; + HRESULT ret; + + TRACE("%p, %p\n", pbc, pfd); - ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk); - if (SUCCEEDED(ret)) - { - ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd); - if (SUCCEEDED(ret)) - { - ret = IFileSystemBindData_SetFindData(pfsbd, pfd); - IFileSystemBindData_Release(pfsbd); - } - IUnknown_Release(pUnk); - } - return ret;} + ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk); + if (SUCCEEDED(ret)) + { + ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd); + if (SUCCEEDED(ret)) + { + ret = IFileSystemBindData_SetFindData(pfsbd, pfd); + IFileSystemBindData_Release(pfsbd); + } + IUnknown_Release(pUnk); + } + return ret; +} - - -static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *iface, REFIID riid, LPVOID *ppV) +static HRESULT WINAPI IFileSystemBindData_fnQueryInterface( + IFileSystemBindData *iface, REFIID riid, LPVOID *ppV) { - IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - TRACE("(%p)->(\n\tIID:\t%s, %p)\n", This, debugstr_guid(riid), ppV); + IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; + TRACE("(%p)->(\n\tIID:\t%s, %p)\n", This, debugstr_guid(riid), ppV); - *ppV = NULL; + *ppV = NULL; - if (IsEqualIID(riid, &IID_IUnknown)) - { - *ppV = This; - } - else if (IsEqualIID(riid, &IID_IFileSystemBindData)) - { - *ppV = (IFileSystemBindData*)This; - } + if (IsEqualIID(riid, &IID_IUnknown)) + *ppV = This; + else if (IsEqualIID(riid, &IID_IFileSystemBindData)) + *ppV = (IFileSystemBindData*)This; - if (*ppV) - { - IUnknown_AddRef((IUnknown*)(*ppV)); - TRACE("-- Interface: (%p)->(%p)\n", ppV, *ppV); - return S_OK; - } - TRACE("-- Interface: E_NOINTERFACE\n"); - return E_NOINTERFACE; + if (*ppV) + { + IUnknown_AddRef((IUnknown*)(*ppV)); + TRACE("-- Interface: (%p)->(%p)\n", ppV, *ppV); + return S_OK; + } + TRACE("-- Interface: E_NOINTERFACE\n"); + return E_NOINTERFACE; } static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface) { - IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - ULONG refCount = InterlockedIncrement(&This->ref); + IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%li)\n", This, refCount - 1); + TRACE("(%p)->(count=%li)\n", This, refCount - 1); - return refCount; + return refCount; } static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface) { - IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - ULONG refCount = InterlockedDecrement(&This->ref); - - TRACE("(%p)->(count=%li)\n", This, refCount + 1); + IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p)->(count=%li)\n", This, refCount + 1); - if (!refCount) - { - TRACE(" destroying ISFBindPidl(%p)\n",This); - HeapFree(GetProcessHeap(), 0, This); - } - return refCount; + if (!refCount) + { + TRACE(" destroying ISFBindPidl(%p)\n",This); + HeapFree(GetProcessHeap(), 0, This); + } + return refCount; } -static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd) +static HRESULT WINAPI IFileSystemBindData_fnGetFindData( + IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd) { - IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - TRACE("(%p), %p\n", This, pfd); + IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; + TRACE("(%p), %p\n", This, pfd); - if (!pfd) - return E_INVALIDARG; + if (!pfd) + return E_INVALIDARG; - memcpy(pfd, &This->findFile, sizeof(WIN32_FIND_DATAW)); - return NOERROR; + memcpy(pfd, &This->findFile, sizeof(WIN32_FIND_DATAW)); + return NOERROR; } -static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd) +static HRESULT WINAPI IFileSystemBindData_fnSetFindData( + IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd) { - IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - TRACE("(%p), %p\n", This, pfd); + IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; + TRACE("(%p), %p\n", This, pfd); - if (pfd) - memcpy(&This->findFile, pfd, sizeof(WIN32_FIND_DATAW)); - else - memset(&This->findFile, 0, sizeof(WIN32_FIND_DATAW)); - return NOERROR; + if (pfd) + memcpy(&This->findFile, pfd, sizeof(WIN32_FIND_DATAW)); + else + memset(&This->findFile, 0, sizeof(WIN32_FIND_DATAW)); + return NOERROR; }