66 lines
3 KiB
C
66 lines
3 KiB
C
#ifndef _IDHIDDEN_H_
|
|
#define _IDHIDDEN_H_
|
|
|
|
//
|
|
// internal APIs for adding Hidden IDs to pidls
|
|
// we use this to add data that we dont want
|
|
// to be noticed by normal namespace handlers
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
IDLHID_EMPTY = 0xBEEF0000, // where's the BEEF?!
|
|
IDLHID_URLFRAGMENT, // Fragment IDs on URLs (#anchors)
|
|
IDLHID_URLQUERY, // Query strings on URLs (?query+info)
|
|
IDLHID_JUNCTION, // Junction point data
|
|
IDLHID_IDFOLDEREX, // IDFOLDEREX, extended data for CFSFolder
|
|
IDLHID_DOCFINDDATA, // DocFind's private attached data (not persisted)
|
|
IDLHID_PERSONALIZED, // personalized like (My Docs/Zeke's Docs)
|
|
IDLHID_recycle2, // recycle
|
|
IDLHID_RECYCLEBINDATA, // RecycleBin private data (not persisted)
|
|
IDLHID_RECYCLEBINORIGINAL, // the original unthunked path for RecycleBin items
|
|
IDLHID_PARENTFOLDER, // merged folder uses this to encode the source folder.
|
|
IDLHID_STARTPANEDATA, // Start Pane's private attached data
|
|
IDLHID_NAVIGATEMARKER // Used by Control Panel's 'Category view'
|
|
};
|
|
typedef DWORD IDLHID;
|
|
|
|
#pragma pack(1)
|
|
typedef struct _HIDDENITEMID
|
|
{
|
|
WORD cb; // hidden item size
|
|
WORD wVersion;
|
|
IDLHID id; // hidden item ID
|
|
} HIDDENITEMID;
|
|
#pragma pack()
|
|
|
|
typedef HIDDENITEMID UNALIGNED *PIDHIDDEN;
|
|
typedef const HIDDENITEMID UNALIGNED *PCIDHIDDEN;
|
|
|
|
STDAPI_(LPITEMIDLIST) ILAppendHiddenID(LPITEMIDLIST pidl, PCIDHIDDEN pidhid);
|
|
STDAPI ILCloneWithHiddenID(LPCITEMIDLIST pidl, PCIDHIDDEN pidhid, LPITEMIDLIST *ppidl);
|
|
STDAPI_(PCIDHIDDEN) ILFindHiddenIDOn(LPCITEMIDLIST pidl, IDLHID id, BOOL fOnLast);
|
|
#define ILFindHiddenID(p, i) ILFindHiddenIDOn((p), (i), TRUE)
|
|
STDAPI_(BOOL) ILRemoveHiddenID(LPITEMIDLIST pidl, IDLHID id);
|
|
STDAPI_(void) ILExpungeRemovedHiddenIDs(LPITEMIDLIST pidl);
|
|
STDAPI_(LPITEMIDLIST) ILCreateWithHidden(UINT cbNonHidden, UINT cbHidden);
|
|
|
|
// helpers for common data types.
|
|
STDAPI_(LPITEMIDLIST) ILAppendHiddenClsid(LPITEMIDLIST pidl, IDLHID id, CLSID *pclsid);
|
|
STDAPI_(BOOL) ILGetHiddenClsid(LPCITEMIDLIST pidl, IDLHID id, CLSID *pclsid);
|
|
STDAPI_(LPITEMIDLIST) ILAppendHiddenStringW(LPITEMIDLIST pidl, IDLHID id, LPCWSTR psz);
|
|
STDAPI_(LPITEMIDLIST) ILAppendHiddenStringA(LPITEMIDLIST pidl, IDLHID id, LPCSTR psz);
|
|
STDAPI_(BOOL) ILGetHiddenStringW(LPCITEMIDLIST pidl, IDLHID id, LPWSTR psz, DWORD cch);
|
|
STDAPI_(BOOL) ILGetHiddenStringA(LPCITEMIDLIST pidl, IDLHID id, LPSTR psz, DWORD cch);
|
|
STDAPI_(int) ILCompareHiddenString(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2, IDLHID id);
|
|
|
|
#ifdef UNICODE
|
|
#define ILAppendHiddenString ILAppendHiddenStringW
|
|
#define ILGetHiddenString ILGetHiddenStringW
|
|
#else //!UNICODE
|
|
#define ILAppendHiddenString ILAppendHiddenStringA
|
|
#define ILGetHiddenString ILGetHiddenStringA
|
|
#endif //UNICODE
|
|
|
|
#endif // _IDHIDDEN_H_
|