[RSHELL]
authorDavid Quintana <gigaherz@gmail.com>
Tue, 29 Apr 2014 11:14:29 +0000 (11:14 +0000)
committerDavid Quintana <gigaherz@gmail.com>
Tue, 29 Apr 2014 11:14:29 +0000 (11:14 +0000)
[SHELL32]
* Move the IID_NULL_PPV_ARG macro to the shobj_undoc header, next to the (also ros-specific) IID_PPV_ARG macro, so that it can be used elsewhere.

[SHELL32]
* Make use of IID_NULL_PPV_ARG in all the calls to GetUIObjectOf, and fix one instance of mismatched riid/pointer.

CORE-7330

svn path=/branches/shell-experiments/; revision=63044

base/shell/rshell/CMenuToolbars.cpp
dll/win32/shell32/folders.cpp
dll/win32/shell32/iconcache.cpp
dll/win32/shell32/pidl.cpp
dll/win32/shell32/shell32_main.cpp
dll/win32/shell32/shelllink.cpp
dll/win32/shell32/shlexec.cpp
dll/win32/shell32/shlview.cpp
include/psdk/shlobj_undoc.h

index dd351b9..710b807 100644 (file)
@@ -1358,8 +1358,6 @@ HRESULT CMenuSFToolbar::InternalContextMenu(INT iItem, INT index, DWORD_PTR dwDa
     CComPtr<IContextMenu> contextMenu = NULL;
     LPCITEMIDLIST pidl = reinterpret_cast<LPCITEMIDLIST>(dwData);
 
-#define IID_NULL_PPV_ARG(Itype, ppType) IID_##Itype, NULL, reinterpret_cast<void**>((static_cast<Itype**>(ppType)))
-
     hr = m_shellFolder->GetUIObjectOf(GetToolbar(), 1, &pidl, IID_NULL_PPV_ARG(IContextMenu, &contextMenu));
     if (FAILED_UNEXPECTEDLY(hr))
     {
index ad1afc6..0dc5e78 100644 (file)
@@ -235,7 +235,7 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
             hr = SHGetDesktopFolder(&psfDesktop);
 
             if (SUCCEEDED(hr))
-                hr = psfDesktop->BindToObject(pSimplePidl, NULL, IID_IShellFolder2, (void**) &psfRecycleBin);
+                hr = psfDesktop->BindToObject(pSimplePidl, NULL, IID_PPV_ARG(IShellFolder2, &psfRecycleBin));
             if (SUCCEEDED(hr))
                 hr = psfRecycleBin->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &EnumIDList);
 
@@ -379,7 +379,7 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
 
                 if (SUCCEEDED(SHGetDesktopFolder(&dsf)))
                 {
-                    HRESULT hr = dsf->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*)&pidl, IID_IShellLinkW, NULL, (LPVOID *)&psl);
+                    HRESULT hr = dsf->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*) &pidl, IID_NULL_PPV_ARG(IShellLinkW, &psl));
 
                     if (SUCCEEDED(hr))
                     {
index 5027d77..0ba1e18 100644 (file)
@@ -745,7 +745,7 @@ BOOL PidlToSicIndex (
 
     TRACE("sf=%p pidl=%p %s\n", sh, pidl, bBigIcon?"Big":"Small");
 
-    if (SUCCEEDED (sh->GetUIObjectOf(0, 1, &pidl, IID_IExtractIconW, 0, (void **)&ei)))
+    if (SUCCEEDED (sh->GetUIObjectOf(0, 1, &pidl, IID_NULL_PPV_ARG(IExtractIconW, &ei))))
     {
       if (SUCCEEDED(ei->GetIconLocation(uFlags, szIconFile, MAX_PATH, &iSourceIndex, &dwFlags)))
       {
index 7b7e490..2f811be 100644 (file)
@@ -686,8 +686,7 @@ HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEM
     CComPtr<IDataObject>        pDataObj;
     HRESULT hr;
 
-    hr = lpsf->GetUIObjectOf(0, 1, &pidlSimple,
-                             IID_IDataObject, 0, (LPVOID*)&pDataObj);
+    hr = lpsf->GetUIObjectOf(0, 1, &pidlSimple, IID_NULL_PPV_ARG(IDataObject, &pDataObj));
     if (SUCCEEDED(hr))
     {
         STGMEDIUM medium;
index beeff9d..047f918 100644 (file)
@@ -566,7 +566,7 @@ DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
     /* get the iconlocation */
     if (SUCCEEDED(hr) && (flags & SHGFI_ICONLOCATION ))
     {
-        UINT uDummy,uFlags;
+        UINT uFlags;
 
         if (flags & SHGFI_USEFILEATTRIBUTES)
         {
@@ -602,8 +602,7 @@ DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
         else
         {
             hr = psfParent->GetUIObjectOf(0, 1,
-                (LPCITEMIDLIST*)&pidlLast, IID_IExtractIconW,
-                &uDummy, (LPVOID*)&pei);
+                (LPCITEMIDLIST*)&pidlLast, IID_NULL_PPV_ARG(IExtractIconW, &pei));
             if (SUCCEEDED(hr))
             {
                 hr = pei->GetIconLocation(uGilFlags,
index 6c63a77..5de77b2 100644 (file)
@@ -1140,7 +1140,7 @@ static HRESULT SHELL_PidlGeticonLocationA(IShellFolder* psf, LPCITEMIDLIST pidl,
     {
         CComPtr<IExtractIconA> pei;
 
-        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_IExtractIconA, NULL, (LPVOID*)&pei);
+        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_NULL_PPV_ARG(IExtractIconA, &pei));
 
         if (SUCCEEDED(hr))
             hr = pei->GetIconLocation(0, pszIconPath, MAX_PATH, piIcon, NULL);
@@ -1410,7 +1410,7 @@ static HRESULT SHELL_PidlGeticonLocationW(IShellFolder* psf, LPCITEMIDLIST pidl,
     {
         CComPtr<IExtractIconW> pei;
 
-        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_IExtractIconW, NULL, (LPVOID*)&pei);
+        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_NULL_PPV_ARG(IExtractIconW, &pei));
 
         if (SUCCEEDED(hr))
             hr = pei->GetIconLocation(0, pszIconPath, MAX_PATH, piIcon, &wFlags);
@@ -2179,7 +2179,7 @@ HRESULT WINAPI CShellLink::DragEnter(IDataObject *pDataObject,
 
     if (SUCCEEDED(hr))
     {
-        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_IDropTarget, NULL, (LPVOID*)&mDropTarget);
+        hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_NULL_PPV_ARG(IDropTarget, &mDropTarget));
 
         if (SUCCEEDED(hr))
             hr = mDropTarget->DragEnter(pDataObject, dwKeyState, pt, pdwEffect);
index c9db589..8e022a1 100644 (file)
@@ -1228,8 +1228,7 @@ static IDataObject *shellex_get_dataobj( LPSHELLEXECUTEINFOW sei )
     if (FAILED(r))
         goto end;
 
-    shf->GetUIObjectOf(NULL, 1, &pidllast,
-                       IID_IDataObject, NULL, (LPVOID*) &dataobj);
+    shf->GetUIObjectOf(NULL, 1, &pidllast, IID_NULL_PPV_ARG(IDataObject, &dataobj));
 
 end:
     if (pidl != sei->lpIDList)
index 97d14a5..aa5de10 100644 (file)
@@ -1708,7 +1708,7 @@ LRESULT CDefView::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl
                 DWORD dwAttributes = SFGAO_CANLINK;
                 DWORD dwEffect = DROPEFFECT_COPY | DROPEFFECT_MOVE;
 
-                if (SUCCEEDED(m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, (LPCITEMIDLIST*)m_apidl, IID_IDataObject, 0, (LPVOID *)&pda)))
+                if (SUCCEEDED(m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, (LPCITEMIDLIST*)m_apidl, IID_NULL_PPV_ARG(IDataObject, &pda))))
                 {
                     IDropSource * pds = (IDropSource *)this;    /* own DropSource interface */
 
@@ -2678,8 +2678,7 @@ HRESULT CDefView::drag_notify_subitem(DWORD grfKeyState, POINTL pt, DWORD *pdwEf
         SendMessageW(m_hWndList, LVM_GETITEMW, 0, (LPARAM) &lvItem);
 
         /* ... and bind m_pCurDropTarget to the IDropTarget interface of an UIObject of this object */
-        hr = m_pSFParent->GetUIObjectOf(m_hWndList, 1,
-                                      (LPCITEMIDLIST*)&lvItem.lParam, IID_IDropTarget, NULL, (LPVOID*)&m_pCurDropTarget);
+        hr = m_pSFParent->GetUIObjectOf(m_hWndList, 1, (LPCITEMIDLIST*)&lvItem.lParam, IID_NULL_PPV_ARG(IDropTarget, &m_pCurDropTarget));
     }
 
     /* If anything failed, m_pCurDropTarget should be NULL now, which ought to be a save state. */
index 00bc21b..7446eef 100644 (file)
@@ -27,9 +27,11 @@ extern "C" {
 #endif /* defined(__cplusplus) */
 
 #ifdef __cplusplus
-#define IID_PPV_ARG(Itype, ppType) IID_##Itype, reinterpret_cast<void**>((static_cast<Itype**>(ppType)))
+#   define IID_PPV_ARG(Itype, ppType) IID_##Itype, reinterpret_cast<void**>((static_cast<Itype**>(ppType)))
+#   define IID_NULL_PPV_ARG(Itype, ppType) IID_##Itype, NULL, reinterpret_cast<void**>((static_cast<Itype**>(ppType)))
 #else
-#define IID_PPV_ARG(Itype, ppType) IID_##Itype, (void**)(ppType)
+#   define IID_PPV_ARG(Itype, ppType) IID_##Itype, (void**)(ppType)
+#   define IID_NULL_PPV_ARG(Itype, ppType) IID_##Itype, NULL, (void**)(ppType)
 #endif
 
 /*****************************************************************************