ReactOS 0.4.16-dev-927-g467dec4
ishellfolder_helpers.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SFGDNO_RETRYWITHFORPARSING   0x00000001
 
#define SFGDNO_RETRYALWAYS   0x80000000
 

Functions

HRESULT WINAPI IShellFolder_GetDisplayNameOf (_In_ IShellFolder *psf, _In_ LPCITEMIDLIST pidl, _In_ SHGDNF uFlags, _Out_ LPSTRRET lpName, _In_ DWORD dwRetryFlags)
 
HRESULT WINAPI IShellFolder_ParseDisplayName (_In_ IShellFolder *psf, _In_ HWND hwndOwner, _In_ LPBC pbcReserved, _In_ LPOLESTR lpszDisplayName, _Out_ ULONG *pchEaten, _Out_ PIDLIST_RELATIVE *ppidl, _Out_ ULONG *pdwAttributes)
 
EXTERN_C HRESULT WINAPI IShellFolder_CompareIDs (_In_ IShellFolder *psf, _In_ LPARAM lParam, _In_ PCUIDLIST_RELATIVE pidl1, _In_ PCUIDLIST_RELATIVE pidl2)
 

Macro Definition Documentation

◆ SFGDNO_RETRYALWAYS

#define SFGDNO_RETRYALWAYS   0x80000000

Definition at line 30 of file ishellfolder_helpers.h.

◆ SFGDNO_RETRYWITHFORPARSING

#define SFGDNO_RETRYWITHFORPARSING   0x00000001

Definition at line 29 of file ishellfolder_helpers.h.

Function Documentation

◆ IShellFolder_CompareIDs()

EXTERN_C HRESULT WINAPI IShellFolder_CompareIDs ( _In_ IShellFolder psf,
_In_ LPARAM  lParam,
_In_ PCUIDLIST_RELATIVE  pidl1,
_In_ PCUIDLIST_RELATIVE  pidl2 
)

Definition at line 362 of file utils.cpp.

367{
368 TRACE("(%p, %p, %p, %p)\n", psf, lParam, pidl1, pidl2);
369
370 if (lParam & ~(SIZE_T)SHCIDS_COLUMNMASK)
371 {
372 /* Try as IShellFolder2 if possible */
373 HRESULT hr = psf->QueryInterface(IID_IShellFolder2, (void **)&psf);
374 if (FAILED(hr))
375 lParam &= SHCIDS_COLUMNMASK;
376 else
377 psf->Release();
378 }
379
380 return psf->CompareIDs(lParam, pidl1, pidl2);
381}
LPARAM lParam
Definition: combotst.c:139
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
ULONG_PTR SIZE_T
Definition: typedefs.h:80

◆ IShellFolder_GetDisplayNameOf()

HRESULT WINAPI IShellFolder_GetDisplayNameOf ( _In_ IShellFolder psf,
_In_ LPCITEMIDLIST  pidl,
_In_ SHGDNF  uFlags,
_Out_ LPSTRRET  lpName,
_In_ DWORD  dwRetryFlags 
)

Definition at line 274 of file utils.cpp.

280{
281 HRESULT hr;
282
283 TRACE("(%p)->(%p, 0x%lX, %p, 0x%lX)\n", psf, pidl, uFlags, lpName, dwRetryFlags);
284
285 hr = psf->GetDisplayNameOf(pidl, uFlags, lpName);
287 return hr;
288
289 dwRetryFlags |= SFGDNO_RETRYALWAYS;
290
291 if ((uFlags & SHGDN_FORPARSING) == 0)
292 dwRetryFlags |= SFGDNO_RETRYWITHFORPARSING;
293
294 // Retry with other flags to get successful results
295 for (SIZE_T iEntry = 0; iEntry < _countof(g_RetryData); ++iEntry)
296 {
297 const RETRY_DATA *pData = &g_RetryData[iEntry];
298 if (!(dwRetryFlags & pData->dwRetryFlags))
299 continue;
300
301 SHGDNF uNewFlags = ((uFlags & ~pData->uRemove) | pData->uAdd);
302 if (uNewFlags == uFlags)
303 continue;
304
305 hr = psf->GetDisplayNameOf(pidl, uNewFlags, lpName);
307 break;
308
309 uFlags = uNewFlags; // Update flags every time
310 }
311
312 return hr;
313}
UINT uFlags
Definition: api.c:59
static const RETRY_DATA g_RetryData[]
Definition: utils.cpp:257
static BOOL SHLWAPI_IsBogusHRESULT(HRESULT hr)
Definition: utils.cpp:245
#define SFGDNO_RETRYWITHFORPARSING
#define SFGDNO_RETRYALWAYS
#define _countof(array)
Definition: sndvol32.h:70
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
_In_ LPCSTR lpName
Definition: winbase.h:2820

◆ IShellFolder_ParseDisplayName()

HRESULT WINAPI IShellFolder_ParseDisplayName ( _In_ IShellFolder psf,
_In_ HWND  hwndOwner,
_In_ LPBC  pbcReserved,
_In_ LPOLESTR  lpszDisplayName,
_Out_ ULONG pchEaten,
_Out_ PIDLIST_RELATIVE ppidl,
_Out_ ULONG pdwAttributes 
)