ReactOS 0.4.17-dev-117-g313be0c
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 606 of file utils.cpp.

611{
612 TRACE("(%p, %p, %p, %p)\n", psf, lParam, pidl1, pidl2);
613
614 if (lParam & ~(SIZE_T)SHCIDS_COLUMNMASK)
615 {
616 /* Try as IShellFolder2 if possible */
617 HRESULT hr = psf->QueryInterface(IID_IShellFolder2, (void **)&psf);
618 if (FAILED(hr))
619 lParam &= SHCIDS_COLUMNMASK;
620 else
621 psf->Release();
622 }
623
624 return psf->CompareIDs(lParam, pidl1, pidl2);
625}
LPARAM lParam
Definition: combotst.c:139
HRESULT hr
Definition: delayimp.cpp:573
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()
#define FAILED(hr)
Definition: intsafe.h:51
#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 518 of file utils.cpp.

524{
525 HRESULT hr;
526
527 TRACE("(%p)->(%p, 0x%lX, %p, 0x%lX)\n", psf, pidl, uFlags, lpName, dwRetryFlags);
528
529 hr = psf->GetDisplayNameOf(pidl, uFlags, lpName);
531 return hr;
532
533 dwRetryFlags |= SFGDNO_RETRYALWAYS;
534
535 if ((uFlags & SHGDN_FORPARSING) == 0)
536 dwRetryFlags |= SFGDNO_RETRYWITHFORPARSING;
537
538 // Retry with other flags to get successful results
539 for (SIZE_T iEntry = 0; iEntry < _countof(g_RetryData); ++iEntry)
540 {
541 const RETRY_DATA *pData = &g_RetryData[iEntry];
542 if (!(dwRetryFlags & pData->dwRetryFlags))
543 continue;
544
545 SHGDNF uNewFlags = ((uFlags & ~pData->uRemove) | pData->uAdd);
546 if (uNewFlags == uFlags)
547 continue;
548
549 hr = psf->GetDisplayNameOf(pidl, uNewFlags, lpName);
551 break;
552
553 uFlags = uNewFlags; // Update flags every time
554 }
555
556 return hr;
557}
UINT uFlags
Definition: api.c:59
static const RETRY_DATA g_RetryData[]
Definition: utils.cpp:501
static BOOL SHLWAPI_IsBogusHRESULT(HRESULT hr)
Definition: utils.cpp:489
#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:2543

◆ 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 
)