From ef04ff090ec36902b0c1589941450fe5a2a12f1c Mon Sep 17 00:00:00 2001 From: David Quintana Date: Wed, 20 Aug 2014 00:39:40 +0000 Subject: [PATCH] [SHELL32] * Stop using the C defines LPSHELLFOLDER, LPSHELLVIEW and LPUNKNOWN, and use the respective C++ interfaces instead. * Change one batch of COM interface pointers into CComPtr-based pointers, and remove associated Release calls (including at least one that was not supposed to be there at all). * Remove a couple (repeated multiple times) pointless casts. svn path=/branches/shell-experiments/; revision=63908 --- dll/win32/shell32/CMenuDeskBar.cpp | 2 +- dll/win32/shell32/brsfolder.cpp | 25 +++--- dll/win32/shell32/defcontextmenu.cpp | 54 ++++------- dll/win32/shell32/desktop.cpp | 4 +- dll/win32/shell32/folders.cpp | 15 ++-- dll/win32/shell32/folders/admintools.cpp | 4 +- dll/win32/shell32/folders/cpanel.cpp | 4 +- dll/win32/shell32/folders/desktop.cpp | 9 +- dll/win32/shell32/folders/fonts.cpp | 4 +- dll/win32/shell32/folders/fs.cpp | 19 ++-- dll/win32/shell32/folders/mycomp.cpp | 7 +- dll/win32/shell32/folders/mydocuments.cpp | 7 +- dll/win32/shell32/folders/netplaces.cpp | 7 +- dll/win32/shell32/folders/printers.cpp | 2 +- dll/win32/shell32/folders/recyclebin.cpp | 5 +- dll/win32/shell32/pidl.cpp | 14 +-- dll/win32/shell32/shellitem.cpp | 6 +- dll/win32/shell32/shelllink.cpp | 4 +- dll/win32/shell32/shellole.cpp | 6 +- dll/win32/shell32/shellord.cpp | 17 ++-- dll/win32/shell32/shlexec.cpp | 8 +- dll/win32/shell32/shlfolder.cpp | 104 +++++++++++----------- dll/win32/shell32/shlview.cpp | 4 +- 23 files changed, 145 insertions(+), 186 deletions(-) diff --git a/dll/win32/shell32/CMenuDeskBar.cpp b/dll/win32/shell32/CMenuDeskBar.cpp index 485553b4e8f..740763853a9 100644 --- a/dll/win32/shell32/CMenuDeskBar.cpp +++ b/dll/win32/shell32/CMenuDeskBar.cpp @@ -116,7 +116,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::QueryService( return S_OK; } -HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnFocusChangeIS(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) +HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnFocusChangeIS(THIS_ IUnknown * lpUnknown, BOOL bFocus) { return S_OK; } diff --git a/dll/win32/shell32/brsfolder.cpp b/dll/win32/shell32/brsfolder.cpp index ace33088257..a8fde0f8018 100644 --- a/dll/win32/shell32/brsfolder.cpp +++ b/dll/win32/shell32/brsfolder.cpp @@ -46,7 +46,7 @@ typedef struct tagbrowse_info typedef struct tagTV_ITEMDATA { - LPSHELLFOLDER lpsfParent; /* IShellFolder of the parent */ + IShellFolder* lpsfParent; /* IShellFolder of the parent */ LPITEMIDLIST lpi; /* PIDL relative to parent */ LPITEMIDLIST lpifq; /* Fully qualified PIDL */ IEnumIDList* pEnumIL; /* Children iterator */ @@ -81,9 +81,9 @@ static const LAYOUT_INFO g_layout_info[] = BIF_NEWDIALOGSTYLE | \ BIF_BROWSEINCLUDEFILES) -static void FillTreeView(browse_info*, LPSHELLFOLDER, +static void FillTreeView(browse_info*, IShellFolder*, LPITEMIDLIST, HTREEITEM, IEnumIDList*); -static HTREEITEM InsertTreeViewItem( browse_info*, IShellFolder *, +static HTREEITEM InsertTreeViewItem( browse_info*, IShellFolder*, LPCITEMIDLIST, LPCITEMIDLIST, IEnumIDList*, HTREEITEM); static const WCHAR szBrowseFolderInfo[] = L"__WINE_BRSFOLDERDLG_INFO"; @@ -206,10 +206,11 @@ static void InitializeTreeView( browse_info *info ) ILRemoveLastID(pidlParent); pidlChild = ILClone(ILFindLastID(root)); - if (_ILIsDesktop(pidlParent)) { + if (_ILIsDesktop(pidlParent)) + { hr = SHGetDesktopFolder(&lpsfParent); } else { - IShellFolder *lpsfDesktop; + CComPtr lpsfDesktop; hr = SHGetDesktopFolder(&lpsfDesktop); if (FAILED(hr)) { WARN("SHGetDesktopFolder failed! hr = %08x\n", hr); @@ -218,7 +219,6 @@ static void InitializeTreeView( browse_info *info ) return; } hr = lpsfDesktop->BindToObject(pidlParent, 0, IID_PPV_ARG(IShellFolder, &lpsfParent)); - lpsfDesktop->Release(); } if (FAILED(hr)) { @@ -310,7 +310,7 @@ static void GetNormalAndSelectedIcons(LPITEMIDLIST lpifq, LPTVITEMW lpTV_ITEM) * Success: TRUE * Failure: FALSE */ -static BOOL GetName(LPSHELLFOLDER lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR lpFriendlyName) +static BOOL GetName(IShellFolder * lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR lpFriendlyName) { BOOL bSuccess=TRUE; STRRET str; @@ -714,8 +714,9 @@ static HRESULT BrsFolder_Rename(browse_info *info, HTREEITEM rename) static HRESULT BrsFolder_NewFolder(browse_info *info) { DWORD flags = BrowseFlagsToSHCONTF(info->lpBrowseInfo->ulFlags); - IShellFolder *desktop, *cur; - ISFHelper *sfhelper; + CComPtr desktop; + CComPtr cur; + CComPtr sfhelper; WCHAR name[MAX_PATH]; HTREEITEM parent, added; LPTV_ITEMDATA item_data; @@ -734,7 +735,6 @@ static HRESULT BrsFolder_NewFolder(browse_info *info) if(FAILED(hr)) return hr; hr = desktop->BindToObject(info->pidlRet, 0, IID_PPV_ARG(IShellFolder, &cur)); - desktop->Release(); if(FAILED(hr)) return hr; @@ -750,7 +750,6 @@ static HRESULT BrsFolder_NewFolder(browse_info *info) if(lenGetUniqueName(&name[len], MAX_PATH-len); - sfhelper->Release(); if(FAILED(hr)) goto cleanup; @@ -792,7 +791,6 @@ static HRESULT BrsFolder_NewFolder(browse_info *info) goto cleanup; added = InsertTreeViewItem(info, cur, new_item, item_data->lpifq, NULL, parent); - cur->Release(); SHFree(new_item); SendMessageW(info->hwndTreeView, TVM_SORTCHILDREN, FALSE, (LPARAM)parent); @@ -842,7 +840,7 @@ static BOOL BrsFolder_OnSetExpanded(browse_info *info, LPVOID selection, /* If 'selection' is a string, convert to a Shell ID List. */ if (is_str) { - IShellFolder *psfDesktop; + CComPtr psfDesktop; HRESULT hr; hr = SHGetDesktopFolder(&psfDesktop); @@ -851,7 +849,6 @@ static BOOL BrsFolder_OnSetExpanded(browse_info *info, LPVOID selection, hr = psfDesktop->ParseDisplayName(NULL, NULL, (LPOLESTR)selection, NULL, &pidlSelection, NULL); - psfDesktop->Release(); if (FAILED(hr)) goto done; } diff --git a/dll/win32/shell32/defcontextmenu.cpp b/dll/win32/shell32/defcontextmenu.cpp index 990023eafaf..418dcc342ae 100644 --- a/dll/win32/shell32/defcontextmenu.cpp +++ b/dll/win32/shell32/defcontextmenu.cpp @@ -37,10 +37,10 @@ class CDefaultContextMenu : public IContextMenu2 { private: - IShellFolder *m_psf; + CComPtr m_psf; UINT m_cidl; PCUITEMID_CHILD_ARRAY m_apidl; - IDataObject *m_pDataObj; + CComPtr m_pDataObj; PIDLIST_ABSOLUTE m_pidlFolder; DWORD m_bGroupPolicyActive; PDynamicShellEntry m_pDynamicEntries; /* first dynamic shell extension entry */ @@ -135,16 +135,12 @@ CDefaultContextMenu::~CDefaultContextMenu() if (m_pidlFolder) CoTaskMemFree(m_pidlFolder); - if (m_pDataObj) - m_pDataObj->Release(); _ILFreeaPidl(const_cast(m_apidl), m_cidl); - if (m_psf) - m_psf->Release(); } HRESULT WINAPI CDefaultContextMenu::Initialize(const DEFCONTEXTMENU *pdcm) { - IDataObject *pDataObj; + CComPtr pDataObj; TRACE("cidl %u\n", pdcm->cidl); @@ -153,7 +149,6 @@ HRESULT WINAPI CDefaultContextMenu::Initialize(const DEFCONTEXTMENU *pdcm) if (m_cidl && !m_apidl) return E_OUTOFMEMORY; m_psf = pdcm->psf; - m_psf->AddRef(); if (SUCCEEDED(SHCreateDataObject(pdcm->pidlFolder, pdcm->cidl, pdcm->apidl, NULL, IID_PPV_ARG(IDataObject, &pDataObj)))) m_pDataObj = pDataObj; @@ -164,12 +159,11 @@ HRESULT WINAPI CDefaultContextMenu::Initialize(const DEFCONTEXTMENU *pdcm) } else { - IPersistFolder2 *pf = NULL; + CComPtr pf = NULL; if (SUCCEEDED(m_psf->QueryInterface(IID_PPV_ARG(IPersistFolder2, &pf)))) { if (FAILED(pf->GetCurFolder(reinterpret_cast(&m_pidlFolder)))) ERR("GetCurFolder failed\n"); - pf->Release(); } TRACE("pidlFolder %p\n", m_pidlFolder); } @@ -307,7 +301,7 @@ BOOL HasClipboardData() { BOOL bRet = FALSE; - IDataObject *pDataObj; + CComPtr pDataObj; if(SUCCEEDED(OleGetClipboard(&pDataObj))) { @@ -323,8 +317,6 @@ HasClipboardData() bRet = TRUE; ReleaseStgMedium(&medium); } - - pDataObj->Release(); } return bRet; @@ -369,7 +361,7 @@ CDefaultContextMenu::LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsi if (IsShellExtensionAlreadyLoaded(pclsid)) return S_OK; - IContextMenu *pcm; + CComPtr pcm; hr = SHCoCreateInstance(NULL, pclsid, NULL, IID_PPV_ARG(IContextMenu, &pcm)); if (hr != S_OK) { @@ -377,28 +369,24 @@ CDefaultContextMenu::LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsi return hr; } - IShellExtInit *pExtInit; + CComPtr pExtInit; hr = pcm->QueryInterface(IID_PPV_ARG(IShellExtInit, &pExtInit)); if (hr != S_OK) { ERR("Failed to query for interface IID_IShellExtInit hr %x pclsid %s\n", hr, wine_dbgstr_guid(pclsid)); - pcm->Release(); return hr; } hr = pExtInit->Initialize(m_pidlFolder, m_pDataObj, hKey); - pExtInit->Release(); if (hr != S_OK) { TRACE("Failed to initialize shell extension error %x pclsid %s\n", hr, wine_dbgstr_guid(pclsid)); - pcm->Release(); return hr; } PDynamicShellEntry pEntry = (DynamicShellEntry *)HeapAlloc(GetProcessHeap(), 0, sizeof(DynamicShellEntry)); if (!pEntry) { - pcm->Release(); return E_OUTOFMEMORY; } @@ -945,7 +933,7 @@ NotifyShellViewWindow(LPCMINVOKECOMMANDINFO lpcmi, BOOL bRefresh) if (!lpSB) return E_FAIL; - LPSHELLVIEW lpSV = NULL; + IShellView * lpSV = NULL; if (FAILED(lpSB->QueryActiveShellView(&lpSV))) return E_FAIL; @@ -1060,7 +1048,7 @@ CDefaultContextMenu::DoPaste( dwKey = MK_CONTROL|MK_SHIFT; } - IDropTarget *pdrop; + CComPtr pdrop; hr = psfTarget->QueryInterface(IID_PPV_ARG(IDropTarget, &pdrop)); if (FAILED(hr)) { @@ -1086,8 +1074,8 @@ HRESULT CDefaultContextMenu::DoCreateLink( LPCMINVOKECOMMANDINFO lpcmi) { - LPDATAOBJECT pDataObj; - IDropTarget *pDT; + CComPtr pDataObj; + CComPtr pDT; HRESULT hr; CComPtr ppf2 = NULL; LPITEMIDLIST pidl; @@ -1143,13 +1131,11 @@ CDefaultContextMenu::DoCreateLink( HRESULT CDefaultContextMenu::DoDelete(LPCMINVOKECOMMANDINFO lpcmi) { TRACE("(%p) Deleting\n", this); - LPDATAOBJECT pDataObj; + CComPtr pDataObj; if (SUCCEEDED(SHCreateDataObject(m_pidlFolder, m_cidl, m_apidl, NULL, IID_PPV_ARG(IDataObject, &pDataObj)))) { - pDataObj->AddRef(); SHCreateThread(DoDeleteThreadProc, pDataObj, NULL, NULL); - pDataObj->Release(); } else return E_FAIL; @@ -1162,7 +1148,7 @@ CDefaultContextMenu::DoCopyOrCut( LPCMINVOKECOMMANDINFO lpcmi, BOOL bCopy) { - LPDATAOBJECT pDataObj; + CComPtr pDataObj; HRESULT hr; if (SUCCEEDED(SHCreateDataObject(m_pidlFolder, m_cidl, m_apidl, NULL, IID_PPV_ARG(IDataObject, &pDataObj)))) @@ -1181,7 +1167,6 @@ CDefaultContextMenu::DoCopyOrCut( } hr = OleSetClipboard(pDataObj); - pDataObj->Release(); return hr; } @@ -1193,7 +1178,7 @@ CDefaultContextMenu::DoCopyOrCut( return E_FAIL; } - LPSHELLVIEW lpSV; + CComPtr lpSV; hr = lpSB->QueryActiveShellView(&lpSV); if (FAILED(hr)) { @@ -1211,7 +1196,6 @@ CDefaultContextMenu::DoCopyOrCut( } else ERR("failed to get item object\n"); - lpSV->Release(); return hr; } @@ -1236,7 +1220,7 @@ CDefaultContextMenu::DoRename( (void)TreeView_EditLabel(hwnd, hItem); } - LPSHELLVIEW lpSV; + CComPtr lpSV; HRESULT hr = lpSB->QueryActiveShellView(&lpSV); if (FAILED(hr)) { @@ -1244,9 +1228,8 @@ CDefaultContextMenu::DoRename( return hr; } - lpSV->SelectItem(m_apidl[0], - SVSI_DESELECTOTHERS | SVSI_EDIT | SVSI_ENSUREVISIBLE | SVSI_FOCUSED | SVSI_SELECT); - lpSV->Release(); + SVSIF selFlags = SVSI_DESELECTOTHERS | SVSI_EDIT | SVSI_ENSUREVISIBLE | SVSI_FOCUSED | SVSI_SELECT; + lpSV->SelectItem(m_apidl[0], selFlags); return S_OK; } @@ -1259,13 +1242,12 @@ CDefaultContextMenu::DoProperties( if (!pidlParent) { - IPersistFolder2 *pf; + CComPtr pf; /* pidlFolder is optional */ if (SUCCEEDED(m_psf->QueryInterface(IID_PPV_ARG(IPersistFolder2, &pf)))) { pf->GetCurFolder((_ITEMIDLIST**)&pidlParent); - pf->Release(); } } diff --git a/dll/win32/shell32/desktop.cpp b/dll/win32/shell32/desktop.cpp index a4afb60f03f..5e7b903f71f 100644 --- a/dll/win32/shell32/desktop.cpp +++ b/dll/win32/shell32/desktop.cpp @@ -45,7 +45,7 @@ private: HWND hWndDesktopListView; CComPtr ShellDesk; CComPtr DesktopView; - IShellBrowser *DefaultShellBrowser; + CComPtr DefaultShellBrowser; LPITEMIDLIST pidlDesktopDirectory; LPITEMIDLIST pidlDesktop; public: @@ -159,7 +159,7 @@ HRESULT CDesktopBrowser::Initialize(HWND hWndx, IShellDesktopTray *ShellDeskx) static CDesktopBrowser *SHDESK_Create(HWND hWnd, LPCREATESTRUCT lpCreateStruct) { - IShellDesktopTray *ShellDesk; + CComPtr ShellDesk; CComObject *pThis; HRESULT hRet; diff --git a/dll/win32/shell32/folders.cpp b/dll/win32/shell32/folders.cpp index 1e05702870c..aedae6c7bc9 100644 --- a/dll/win32/shell32/folders.cpp +++ b/dll/win32/shell32/folders.cpp @@ -96,7 +96,6 @@ void InitIconOverlays(void) WCHAR szName[MAX_PATH]; WCHAR szValue[100]; CLSID clsid; - IShellIconOverlayIdentifier * Overlay; if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers", 0, KEY_READ, &hKey) != ERROR_SUCCESS) return; @@ -131,12 +130,13 @@ void InitIconOverlays(void) dwSize = sizeof(szValue) / sizeof(WCHAR); if (RegGetValueW(hKey, szName, NULL, RRF_RT_REG_SZ, NULL, szValue, &dwSize) == ERROR_SUCCESS) { + CComPtr Overlay; CLSIDFromString(szValue, &clsid); dwResult = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IShellIconOverlayIdentifier, &Overlay)); if (dwResult == S_OK) { - Handlers[NumIconOverlayHandlers] = Overlay; + Handlers[NumIconOverlayHandlers] = Overlay.Detach(); NumIconOverlayHandlers++; } } @@ -200,7 +200,7 @@ GetIconOverlay(LPCITEMIDLIST pidl, WCHAR * wTemp, int* pIndex) IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl) { CComPtr initIcon; - IExtractIconW *extractIcon; + CComPtr extractIcon; GUID const * riid; int icon_idx; UINT flags; @@ -418,7 +418,7 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl) initIcon->SetNormalIcon(wTemp, icon_idx); } - return extractIcon; + return extractIcon.Detach(); } /************************************************************************** @@ -426,8 +426,8 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl) */ IExtractIconA* IExtractIconA_Constructor(LPCITEMIDLIST pidl) { - IExtractIconW *extractIconW; - IExtractIconA *extractIconA; + CComPtr extractIconW; + CComPtr extractIconA; HRESULT hr; extractIconW = IExtractIconW_Constructor(pidl); @@ -435,8 +435,7 @@ IExtractIconA* IExtractIconA_Constructor(LPCITEMIDLIST pidl) return NULL; hr = extractIconW->QueryInterface(IID_PPV_ARG(IExtractIconA, &extractIconA)); - extractIconW->Release(); if (FAILED(hr)) return NULL; - return extractIconA; + return extractIconA.Detach(); } diff --git a/dll/win32/shell32/folders/admintools.cpp b/dll/win32/shell32/folders/admintools.cpp index 198b57d9d49..35cf97f81cc 100644 --- a/dll/win32/shell32/folders/admintools.cpp +++ b/dll/win32/shell32/folders/admintools.cpp @@ -316,14 +316,14 @@ HRESULT WINAPI CAdminToolsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCIT else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } diff --git a/dll/win32/shell32/folders/cpanel.cpp b/dll/win32/shell32/folders/cpanel.cpp index cf0c9cf448d..306786a8016 100644 --- a/dll/win32/shell32/folders/cpanel.cpp +++ b/dll/win32/shell32/folders/cpanel.cpp @@ -547,12 +547,12 @@ HRESULT WINAPI CControlPanelFolder::GetUIObjectOf(HWND hwndOwner, hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj); } else if (IsEqualIID(riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine(pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl); + pObj = IExtractIconA_Constructor(pidl); SHFree(pidl); hr = S_OK; } else if (IsEqualIID(riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine(pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl); + pObj = IExtractIconW_Constructor(pidl); SHFree(pidl); hr = S_OK; } else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA)) diff --git a/dll/win32/shell32/folders/desktop.cpp b/dll/win32/shell32/folders/desktop.cpp index 756d8449198..6fb5c3500dd 100644 --- a/dll/win32/shell32/folders/desktop.cpp +++ b/dll/win32/shell32/folders/desktop.cpp @@ -637,14 +637,14 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf( else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } @@ -1476,7 +1476,7 @@ HRESULT WINAPI CDesktopFolder::Drop(IDataObject *pDataObject, if (SUCCEEDED(hr)) { - IDropTarget *pDT; + CComPtr pDT; hr = this->BindToObject(pidl, NULL, IID_PPV_ARG(IDropTarget, &pDT)); CoTaskMemFree(pidl); if (SUCCEEDED(hr)) @@ -1517,13 +1517,12 @@ HRESULT WINAPI CDesktopFolder::_GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut if (SUCCEEDED(hr)) { - IShellFolder *psf; + CComPtr psf; hr = this->BindToObject(pidlNext, NULL, IID_PPV_ARG(IShellFolder, &psf)); CoTaskMemFree(pidlNext); if (SUCCEEDED(hr)) { hr = psf->GetUIObjectOf(NULL, 1, &pidl, IID_IDropTarget, NULL, ppvOut); - psf->Release(); if (FAILED(hr)) ERR("FS GetUIObjectOf failed: %x\n", hr); } diff --git a/dll/win32/shell32/folders/fonts.cpp b/dll/win32/shell32/folders/fonts.cpp index 644659e04de..c337e426775 100644 --- a/dll/win32/shell32/folders/fonts.cpp +++ b/dll/win32/shell32/folders/fonts.cpp @@ -409,14 +409,14 @@ HRESULT WINAPI CFontsFolder::GetUIObjectOf( else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } diff --git a/dll/win32/shell32/folders/fs.cpp b/dll/win32/shell32/folders/fs.cpp index 1bd214a1223..9ffd0b9eebe 100644 --- a/dll/win32/shell32/folders/fs.cpp +++ b/dll/win32/shell32/folders/fs.cpp @@ -350,7 +350,7 @@ HRESULT WINAPI CFSFolder::CompareIDs(LPARAM lParam, HRESULT WINAPI CFSFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_INVALIDARG; TRACE ("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid (&riid), @@ -373,7 +373,6 @@ HRESULT WINAPI CFSFolder::CreateViewObject(HWND hwndOwner, if (pShellView) { hr = pShellView->QueryInterface(riid, ppvOut); - pShellView->Release(); } } } @@ -494,14 +493,14 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner, else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } @@ -862,7 +861,7 @@ HRESULT WINAPI CFSFolder::MapColumnToSCID (UINT column, HRESULT WINAPI CFSFolder::GetUniqueName(LPWSTR pwszName, UINT uLen) { - IEnumIDList *penum; + CComPtr penum; HRESULT hr; WCHAR wszText[MAX_PATH]; WCHAR wszNewFolder[25]; @@ -900,8 +899,6 @@ next: goto next; } } - - penum->Release(); } return hr; } @@ -1749,8 +1746,8 @@ HRESULT WINAPI CFSFolder::_DoDrop(IDataObject *pDataObject, DWORD WINAPI CFSFolder::_DoDropThreadProc(LPVOID lpParameter) { CoInitialize(NULL); _DoDropData *data = static_cast<_DoDropData*>(lpParameter); - IDataObject *pDataObject; - HRESULT hr = CoGetInterfaceAndReleaseStream (data->pStream, IID_IDataObject, (void**) &pDataObject); + CComPtr pDataObject; + HRESULT hr = CoGetInterfaceAndReleaseStream (data->pStream, IID_PPV_ARG(IDataObject, &pDataObject)); if (SUCCEEDED(hr)) { @@ -1760,7 +1757,6 @@ DWORD WINAPI CFSFolder::_DoDropThreadProc(LPVOID lpParameter) { { pAsyncOperation->EndOperation(hr, NULL, data->pdwEffect); } - pDataObject->Release(); } //Release the CFSFolder and data object holds in the copying thread. data->This->Release(); @@ -1861,7 +1857,7 @@ HRESULT WINAPI CFSFolder::_LoadDynamicDropTargetHandler(const CLSID *pclsid, LPC TRACE("CFSFolder::_LoadDynamicDropTargetHandler entered\n"); HRESULT hr; - IPersistFile *pp; + CComPtr pp; hr = SHCoCreateInstance(NULL, pclsid, NULL, IID_PPV_ARG(IPersistFile, &pp)); if (hr != S_OK) { @@ -1875,6 +1871,5 @@ HRESULT WINAPI CFSFolder::_LoadDynamicDropTargetHandler(const CLSID *pclsid, LPC ERR("Failed to query for interface IID_IShellExtInit hr %x pclsid %s\n", hr, wine_dbgstr_guid(pclsid)); return hr; } - pp->Release(); return hr; } \ No newline at end of file diff --git a/dll/win32/shell32/folders/mycomp.cpp b/dll/win32/shell32/folders/mycomp.cpp index d9515caa1dc..4b93fef3492 100644 --- a/dll/win32/shell32/folders/mycomp.cpp +++ b/dll/win32/shell32/folders/mycomp.cpp @@ -326,7 +326,7 @@ HRESULT WINAPI CDrivesFolder::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LPC */ HRESULT WINAPI CDrivesFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, @@ -353,7 +353,6 @@ HRESULT WINAPI CDrivesFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVO if (pShellView) { hr = pShellView->QueryInterface(riid, ppvOut); - pShellView->Release(); } } TRACE ("-- (%p)->(interface=%p)\n", this, ppvOut); @@ -449,14 +448,14 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf(HWND hwndOwner, else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } diff --git a/dll/win32/shell32/folders/mydocuments.cpp b/dll/win32/shell32/folders/mydocuments.cpp index b5e99b466a2..20b4642585a 100644 --- a/dll/win32/shell32/folders/mydocuments.cpp +++ b/dll/win32/shell32/folders/mydocuments.cpp @@ -283,7 +283,7 @@ HRESULT WINAPI CMyDocsFolder::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LPC */ HRESULT WINAPI CMyDocsFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_INVALIDARG; TRACE ("(%p)->(hwnd=%p,%s,%p)\n", @@ -309,7 +309,6 @@ HRESULT WINAPI CMyDocsFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVO if (pShellView) { hr = pShellView->QueryInterface(riid, ppvOut); - pShellView->Release(); } } TRACE ("-- (%p)->(interface=%p)\n", this, ppvOut); @@ -401,14 +400,14 @@ HRESULT WINAPI CMyDocsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMID else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } diff --git a/dll/win32/shell32/folders/netplaces.cpp b/dll/win32/shell32/folders/netplaces.cpp index 00b3c534c6e..198dde0f032 100644 --- a/dll/win32/shell32/folders/netplaces.cpp +++ b/dll/win32/shell32/folders/netplaces.cpp @@ -140,7 +140,7 @@ HRESULT WINAPI CNetFolder::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LPCITE */ HRESULT WINAPI CNetFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, @@ -167,7 +167,6 @@ HRESULT WINAPI CNetFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID if (pShellView) { hr = pShellView->QueryInterface(riid, ppvOut); - pShellView->Release(); } } TRACE("-- (%p)->(interface=%p)\n", this, ppvOut); @@ -257,14 +256,14 @@ HRESULT WINAPI CNetFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIS else if (IsEqualIID(riid, IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + pObj = IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID(riid, IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + pObj = IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } diff --git a/dll/win32/shell32/folders/printers.cpp b/dll/win32/shell32/folders/printers.cpp index f459fa0d595..10c17a599ae 100644 --- a/dll/win32/shell32/folders/printers.cpp +++ b/dll/win32/shell32/folders/printers.cpp @@ -448,7 +448,7 @@ HRESULT WINAPI CPrinterFolder::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LP */ HRESULT WINAPI CPrinterFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, diff --git a/dll/win32/shell32/folders/recyclebin.cpp b/dll/win32/shell32/folders/recyclebin.cpp index de50bd1e02f..94417f5f126 100644 --- a/dll/win32/shell32/folders/recyclebin.cpp +++ b/dll/win32/shell32/folders/recyclebin.cpp @@ -560,7 +560,7 @@ HRESULT WINAPI CRecycleBin::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LPCIT HRESULT WINAPI CRecycleBin::CreateViewObject(HWND hwndOwner, REFIID riid, void **ppv) { - LPSHELLVIEW pShellView; + CComPtr pShellView; HRESULT hr = E_NOINTERFACE; TRACE("(%p, %p, %s, %p)\n", this, hwndOwner, debugstr_guid(&riid), ppv); @@ -584,7 +584,6 @@ HRESULT WINAPI CRecycleBin::CreateViewObject(HWND hwndOwner, REFIID riid, void * if (pShellView) { hr = pShellView->QueryInterface(riid, ppv); - pShellView->Release(); } } else @@ -855,7 +854,7 @@ HRESULT WINAPI CRecycleBin::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { HRESULT hr; LPSHELLBROWSER lpSB; - LPSHELLVIEW lpSV = NULL; + IShellView * lpSV = NULL; TRACE("%p %p verb %p\n", this, lpcmi, lpcmi->lpVerb); diff --git a/dll/win32/shell32/pidl.cpp b/dll/win32/shell32/pidl.cpp index 7f877b99ba2..837d6943b94 100644 --- a/dll/win32/shell32/pidl.cpp +++ b/dll/win32/shell32/pidl.cpp @@ -51,7 +51,7 @@ static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl); * RETURNS * True if the display name could be retrieved successfully, False otherwise */ -static BOOL ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR path, DWORD type) +static BOOL ILGetDisplayNameExA(IShellFolder * psf, LPCITEMIDLIST pidl, LPSTR path, DWORD type) { BOOL ret = FALSE; WCHAR wPath[MAX_PATH]; @@ -68,10 +68,10 @@ static BOOL ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR pat return ret; } -BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type) +BOOL WINAPI ILGetDisplayNameExW(IShellFolder * psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type) { CComPtr psfParent; - LPSHELLFOLDER lsf = psf; + IShellFolder * lsf = psf; HRESULT ret = NO_ERROR; LPCITEMIDLIST pidllast; STRRET strret; @@ -141,7 +141,7 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa /************************************************************************* * ILGetDisplayNameEx [SHELL32.186] */ -BOOL WINAPI ILGetDisplayNameEx(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type) +BOOL WINAPI ILGetDisplayNameEx(IShellFolder * psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type) { TRACE_(shell)("%p %p %p %d\n", psf, pidl, path, type); @@ -681,7 +681,7 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) * * NOTES */ -HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST *pidlReal) +HRESULT WINAPI SHGetRealIDL(IShellFolder * lpsf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST *pidlReal) { CComPtr pDataObj; HRESULT hr; @@ -1063,7 +1063,7 @@ EXTERN_C LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW(LPCVOID lpszPath) * the pidl can be a simple one. since we can't get the path out of the pidl * we have to take all data from the pidl */ -HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, +HRESULT WINAPI SHGetDataFromIDListA(IShellFolder * psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len) { LPSTR filename, shortname; @@ -1121,7 +1121,7 @@ HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, * SHGetDataFromIDListW [SHELL32.248] * */ -HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, +HRESULT WINAPI SHGetDataFromIDListW(IShellFolder * psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len) { LPSTR filename, shortname; diff --git a/dll/win32/shell32/shellitem.cpp b/dll/win32/shell32/shellitem.cpp index 49ae0ca19bc..d684870c05e 100644 --- a/dll/win32/shell32/shellitem.cpp +++ b/dll/win32/shell32/shellitem.cpp @@ -244,7 +244,7 @@ HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, IShellFolder *psfParent, LPCITEMIDLIST pidl, IShellItem **ppsi) { HRESULT hr; - IShellItem *newShellItem; + CComPtr newShellItem; LPITEMIDLIST new_pidl; CComPtr newPersistIDList; @@ -308,6 +308,8 @@ HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, return hr; } ILFree(new_pidl); - *ppsi = newShellItem; + + *ppsi = newShellItem.Detach(); + return hr; } diff --git a/dll/win32/shell32/shelllink.cpp b/dll/win32/shell32/shelllink.cpp index 5de77b2acdc..0b2d3c0dd63 100644 --- a/dll/win32/shell32/shelllink.cpp +++ b/dll/win32/shell32/shelllink.cpp @@ -2173,7 +2173,7 @@ HRESULT WINAPI CShellLink::DragEnter(IDataObject *pDataObject, { TRACE("(%p)->(DataObject=%p)\n", this, pDataObject); LPCITEMIDLIST pidlLast; - IShellFolder *psf; + CComPtr psf; HRESULT hr = SHBindToParent(pPidl, IID_PPV_ARG(IShellFolder, &psf), &pidlLast); @@ -2185,8 +2185,6 @@ HRESULT WINAPI CShellLink::DragEnter(IDataObject *pDataObject, hr = mDropTarget->DragEnter(pDataObject, dwKeyState, pt, pdwEffect); else *pdwEffect = DROPEFFECT_NONE; - - psf->Release(); } else *pdwEffect = DROPEFFECT_NONE; diff --git a/dll/win32/shell32/shellole.cpp b/dll/win32/shell32/shellole.cpp index 56e6562a763..884ab671022 100644 --- a/dll/win32/shell32/shellole.cpp +++ b/dll/win32/shell32/shellole.cpp @@ -68,7 +68,7 @@ DWORD WINAPI __SHGUIDToStringW (REFGUID guid, LPWSTR str) HRESULT WINAPI SHCoCreateInstance( LPCWSTR aclsid, const CLSID *clsid, - LPUNKNOWN pUnkOuter, + IUnknown * pUnkOuter, REFIID refiid, LPVOID *ppv) { @@ -314,7 +314,7 @@ public: HRESULT Initialize(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const IID *riidInstx); // IClassFactory - virtual HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject); + virtual HRESULT WINAPI CreateInstance(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject); virtual HRESULT WINAPI LockServer(BOOL fLock); BEGIN_COM_MAP(IDefClFImpl) @@ -346,7 +346,7 @@ HRESULT IDefClFImpl::Initialize(LPFNCREATEINSTANCE lpfnCIx, PLONG pcRefDllx, con /****************************************************************************** * IDefClF_fnCreateInstance */ -HRESULT WINAPI IDefClFImpl::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject) +HRESULT WINAPI IDefClFImpl::CreateInstance(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject) { TRACE("%p->(%p,%s,%p)\n", this, pUnkOuter, shdebugstr_guid(&riid), ppvObject); diff --git a/dll/win32/shell32/shellord.cpp b/dll/win32/shell32/shellord.cpp index 4dc6b94210d..8c7b541a8b4 100644 --- a/dll/win32/shell32/shellord.cpp +++ b/dll/win32/shell32/shellord.cpp @@ -484,13 +484,13 @@ HRESULT WINAPI SHRevokeDragDrop(HWND hWnd) */ HRESULT WINAPI SHDoDragDrop( HWND hWnd, - LPDATAOBJECT lpDataObject, + IDataObject * lpDataObject, LPDROPSOURCE lpDropSource, DWORD dwOKEffect, LPDWORD pdwEffect) { FIXME("(%p %p %p 0x%08x %p):stub.\n", - hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect); + hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect); return DoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect); } @@ -1015,7 +1015,7 @@ HRESULT WINAPI SHCreateShellFolderViewEx( LPCSFV psvcbi, /* [in] shelltemplate struct */ IShellView **ppv) /* [out] IShellView pointer */ { - IShellView *psf; + CComPtr psf; HRESULT hRes; TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=%p\n", @@ -1028,7 +1028,6 @@ HRESULT WINAPI SHCreateShellFolderViewEx( return hRes; hRes = psf->QueryInterface(IID_PPV_ARG(IShellView, ppv)); - psf->Release(); return hRes; } @@ -1050,14 +1049,14 @@ EXTERN_C BOOL WINAPI SHRunControlPanel (LPCWSTR lpcszCmdLine, HWND hwndMsgParent return 0; } -static LPUNKNOWN SHELL32_IExplorerInterface=0; +static IUnknown * SHELL32_IExplorerInterface=0; /************************************************************************* * SHSetInstanceExplorer [SHELL32.176] * * NOTES * Sets the interface */ -VOID WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown) +VOID WINAPI SHSetInstanceExplorer (IUnknown * lpUnknown) { TRACE("%p\n", lpUnknown); SHELL32_IExplorerInterface = lpUnknown; } @@ -1897,7 +1896,7 @@ HRESULT WINAPI SHCreateStdEnumFmtEtc( const FORMATETC *lpFormats, LPENUMFORMATETC *ppenumFormatetc) { - IEnumFORMATETC *pef; + CComPtr pef; HRESULT hRes; TRACE("cf=%d fe=%p pef=%p\n", cFormats, lpFormats, ppenumFormatetc); @@ -1907,7 +1906,6 @@ HRESULT WINAPI SHCreateStdEnumFmtEtc( pef->AddRef(); hRes = pef->QueryInterface(IID_PPV_ARG(IEnumFORMATETC, ppenumFormatetc)); - pef->Release(); return hRes; } @@ -1918,7 +1916,7 @@ HRESULT WINAPI SHCreateStdEnumFmtEtc( */ HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv) { - IShellView *psf; + CComPtr psf; HRESULT hRes; *ppsv = NULL; @@ -1933,7 +1931,6 @@ HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **pps return hRes; hRes = psf->QueryInterface(IID_PPV_ARG(IShellView, ppsv)); - psf->Release(); return hRes; } diff --git a/dll/win32/shell32/shlexec.cpp b/dll/win32/shell32/shlexec.cpp index e1e62cb34a6..555c0989b90 100644 --- a/dll/win32/shell32/shlexec.cpp +++ b/dll/win32/shell32/shlexec.cpp @@ -404,7 +404,7 @@ static BOOL SHELL_ArgifyW(WCHAR* out, DWORD len, const WCHAR* fmt, const WCHAR* static HRESULT SHELL_GetPathFromIDListForExecuteW(LPCITEMIDLIST pidl, LPWSTR pszPath, UINT uOutSize) { STRRET strret; - IShellFolder *desktop; + CComPtr desktop; HRESULT hr = SHGetDesktopFolder(&desktop); @@ -414,8 +414,6 @@ static HRESULT SHELL_GetPathFromIDListForExecuteW(LPCITEMIDLIST pidl, LPWSTR psz if (SUCCEEDED(hr)) StrRetToStrNW(pszPath, uOutSize, &strret, pidl); - - desktop->Release(); } return hr; @@ -1782,7 +1780,7 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) /* process the IDList */ if (sei_tmp.fMask & SEE_MASK_IDLIST) { - IShellExecuteHookW* pSEH; + CComPtr pSEH; HRESULT hr = SHBindToParent((LPCITEMIDLIST)sei_tmp.lpIDList, IID_PPV_ARG(IShellExecuteHookW, &pSEH), NULL); @@ -1790,8 +1788,6 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) { hr = pSEH->Execute(&sei_tmp); - pSEH->Release(); - if (hr == S_OK) { HeapFree(GetProcessHeap(), 0, wszApplicationName); diff --git a/dll/win32/shell32/shlfolder.cpp b/dll/win32/shell32/shlfolder.cpp index bbecaea2a9d..c367c8645dd 100644 --- a/dll/win32/shell32/shlfolder.cpp +++ b/dll/win32/shell32/shlfolder.cpp @@ -212,11 +212,11 @@ static HRESULT SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot, if (SUCCEEDED (hr)) { LPITEMIDLIST pidlAbsolute = ILCombine (pidlRoot, pidlChild); - IPersistFolder *pPF; - IPersistFolder3 *ppf; + CComPtr ppf; + CComPtr ppf3; if (_ILIsFolder(pidlChild) && - SUCCEEDED(pShellFolder->QueryInterface(IID_PPV_ARG(IPersistFolder3, &ppf)))) + SUCCEEDED(pShellFolder->QueryInterface(IID_PPV_ARG(IPersistFolder3, &ppf3)))) { PERSIST_FOLDER_TARGET_INFO ppfti; @@ -241,13 +241,11 @@ static HRESULT SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot, hr = E_INVALIDARG; } - ppf->InitializeEx(NULL, pidlAbsolute, &ppfti); - ppf->Release(); + ppf3->InitializeEx(NULL, pidlAbsolute, &ppfti); } - else if (SUCCEEDED((hr = pShellFolder->QueryInterface(IID_PPV_ARG(IPersistFolder, &pPF))))) + else if (SUCCEEDED((hr = pShellFolder->QueryInterface(IID_PPV_ARG(IPersistFolder, &ppf))))) { - pPF->Initialize(pidlAbsolute); - pPF->Release(); + ppf->Initialize(pidlAbsolute); } ILFree (pidlAbsolute); } @@ -280,7 +278,7 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot, LPCITEMIDLIST pidlComplete, REFIID riid, LPVOID * ppvOut) { GUID const *clsid; - IShellFolder *pSF; + CComPtr pSF; HRESULT hr; LPITEMIDLIST pidlChild; @@ -325,7 +323,6 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot, /* go deeper */ hr = pSF->BindToObject(ILGetNext (pidlComplete), NULL, riid, ppvOut); } - pSF->Release(); } TRACE ("-- returning (%p) %08x\n", *ppvOut, hr); @@ -359,7 +356,7 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, pidlFirst = ILCloneFirst(pidl); if (pidlFirst) { - IShellFolder *psfChild; + CComPtr psfChild; hr = psf->BindToObject(pidlFirst, NULL, IID_PPV_ARG(IShellFolder, &psfChild)); if (SUCCEEDED (hr)) @@ -373,7 +370,6 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, if(!StrRetToStrNW (szOut, dwOutLen, &strTemp, pidlNext)) hr = E_FAIL; } - psfChild->Release(); } ILFree (pidlFirst); } else @@ -491,7 +487,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO if (SFGAO_HASSUBFOLDER & *pdwAttributes) { - IShellFolder *psf2; + CComPtr psf2; if (SUCCEEDED(psf->BindToObject(pidl, 0, IID_PPV_ARG(IShellFolder, &psf2)))) { IEnumIDList *pEnumIL = NULL; @@ -501,7 +497,6 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO *pdwAttributes &= ~SFGAO_HASSUBFOLDER; pEnumIL->Release(); } - psf2->Release(); } } } else @@ -514,68 +509,73 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO /*********************************************************************** * SHELL32_CompareIDs */ -HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) +HRESULT SHELL32_CompareIDs(IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) { int type1, - type2; + type2; char szTemp1[MAX_PATH]; char szTemp2[MAX_PATH]; HRESULT nReturn; - LPITEMIDLIST firstpidl, - nextpidl1, - nextpidl2; - IShellFolder *psf; + LPITEMIDLIST firstpidl; + LPITEMIDLIST nextpidl1; + LPITEMIDLIST nextpidl2; + CComPtr psf; /* test for empty pidls */ - BOOL isEmpty1 = _ILIsDesktop (pidl1); - BOOL isEmpty2 = _ILIsDesktop (pidl2); + BOOL isEmpty1 = _ILIsDesktop(pidl1); + BOOL isEmpty2 = _ILIsDesktop(pidl2); if (isEmpty1 && isEmpty2) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 0 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0); if (isEmpty1) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (WORD) -1); if (isEmpty2) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 1); /* test for different types. Sort order is the PT_* constant */ - type1 = _ILGetDataPointer (pidl1)->type; - type2 = _ILGetDataPointer (pidl2)->type; + type1 = _ILGetDataPointer(pidl1)->type; + type2 = _ILGetDataPointer(pidl2)->type; if (type1 < type2) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (WORD) -1); else if (type1 > type2) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 1); /* test for name of pidl */ - _ILSimpleGetText (pidl1, szTemp1, MAX_PATH); - _ILSimpleGetText (pidl2, szTemp2, MAX_PATH); - nReturn = lstrcmpiA (szTemp1, szTemp2); + _ILSimpleGetText(pidl1, szTemp1, MAX_PATH); + _ILSimpleGetText(pidl2, szTemp2, MAX_PATH); + nReturn = lstrcmpiA(szTemp1, szTemp2); if (nReturn < 0) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (WORD) -1); else if (nReturn > 0) - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 ); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 1); /* test of complex pidls */ - firstpidl = ILCloneFirst (pidl1); - nextpidl1 = ILGetNext (pidl1); - nextpidl2 = ILGetNext (pidl2); + firstpidl = ILCloneFirst(pidl1); + nextpidl1 = ILGetNext(pidl1); + nextpidl2 = ILGetNext(pidl2); /* optimizing: test special cases and bind not deeper */ /* the deeper shellfolder would do the same */ - isEmpty1 = _ILIsDesktop (nextpidl1); - isEmpty2 = _ILIsDesktop (nextpidl2); + isEmpty1 = _ILIsDesktop(nextpidl1); + isEmpty2 = _ILIsDesktop(nextpidl2); - if (isEmpty1 && isEmpty2) { - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 0 ); - } else if (isEmpty1) { - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 ); - } else if (isEmpty2) { - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 ); - /* optimizing end */ - } else if (SUCCEEDED (iface->BindToObject(firstpidl, NULL, IID_PPV_ARG(IShellFolder, &psf)))) { - nReturn = psf->CompareIDs(lParam, nextpidl1, nextpidl2); - psf->Release(); + if (isEmpty1 && isEmpty2) + { + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0); } - ILFree (firstpidl); + else if (isEmpty1) + { + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (WORD) -1); + } + else if (isEmpty2) + { + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 1); + /* optimizing end */ + } + else if (SUCCEEDED(iface->BindToObject(firstpidl, NULL, IID_PPV_ARG(IShellFolder, &psf)))) { + nReturn = psf->CompareIDs(lParam, nextpidl1, nextpidl2); + } + ILFree(firstpidl); return nReturn; } @@ -584,10 +584,10 @@ HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST p * * Undocumented. */ -HRESULT WINAPI SHCreateLinks( HWND hWnd, LPCSTR lpszDir, LPDATAOBJECT lpDataObject, +HRESULT WINAPI SHCreateLinks( HWND hWnd, LPCSTR lpszDir, IDataObject * lpDataObject, UINT uFlags, LPITEMIDLIST *lppidlLinks) { - FIXME("%p %s %p %08x %p\n",hWnd,lpszDir,lpDataObject,uFlags,lppidlLinks); + FIXME("%p %s %p %08x %p\n", hWnd, lpszDir, lpDataObject, uFlags, lppidlLinks); return E_NOTIMPL; } diff --git a/dll/win32/shell32/shlview.cpp b/dll/win32/shell32/shlview.cpp index ee3dd030eb2..decb830a91d 100644 --- a/dll/win32/shell32/shlview.cpp +++ b/dll/win32/shell32/shlview.cpp @@ -1755,7 +1755,7 @@ LRESULT CDefView::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl if (GetSelections()) { - IDataObject * pda; + CComPtr pda; DWORD dwAttributes = SFGAO_CANLINK; DWORD dwEffect = DROPEFFECT_COPY | DROPEFFECT_MOVE; @@ -1775,14 +1775,12 @@ LRESULT CDefView::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl if (SUCCEEDED(pda->QueryInterface(IID_PPV_ARG(IAsyncOperation, &piaso)))) { piaso->SetAsyncMode(TRUE); - piaso->Release(); } if (pds) { DWORD dwEffect2; DoDragDrop(pda, pds, dwEffect, &dwEffect2); } - pda->Release(); } } break;