//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: P I D L U T I L . H // // Contents: Various PIDL utilities // // Notes: // // Author: jeffspr 1 Oct 1997 // //---------------------------------------------------------------------------- #pragma once // This avoids duplicate definitions with Shell PIDL functions // and MUST BE DEFINED! #define AVOID_NET_CONFIG_DUPLICATES // #include // #include // These functions are so trivial & get called so often they should be inlined // for ship. // #if DBG LPITEMIDLIST ILNext(LPCITEMIDLIST pidl); BOOL ILIsEmpty(LPCITEMIDLIST pidl); #else #define ILNext(pidl) ((LPITEMIDLIST) ((BYTE *)pidl + ((LPITEMIDLIST)pidl)->mkid.cb)) #define ILIsEmpty(pidl) (!pidl || !((LPITEMIDLIST)pidl)->mkid.cb) #endif //LPITEMIDLIST ILGetNext(LPCITEMIDLIST pidl); //UINT ILGetSize(LPCITEMIDLIST pidl); LPITEMIDLIST ILCreate(DWORD dwSize); VOID FreeIDL(LPITEMIDLIST pidl); int ILCompare(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); BOOL ILIsSingleID(LPCITEMIDLIST pidl); UINT ILGetCID(LPCITEMIDLIST pidl); UINT ILGetSizeCID(LPCITEMIDLIST pidl, UINT cid); LPITEMIDLIST CloneIDLFirstCID(LPCITEMIDLIST pidl, UINT cid); LPITEMIDLIST ILSkipCID(LPCITEMIDLIST pid, UINT cid); BOOL ILIsDesktopID(LPCITEMIDLIST pidl); //LPITEMIDLIST ILFindLastID(LPCITEMIDLIST pidl); //LPITEMIDLIST ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); BOOL ILIsEqual(LPITEMIDLIST pidl1, LPITEMIDLIST pidl2); //BOOL ILRemoveLastID(LPITEMIDLIST pidl); LPITEMIDLIST CloneIDL(LPCITEMIDLIST pidl); #ifdef PCONFOLDENTRY_DEFINED HRESULT HrCloneRgIDL( const PCONFOLDPIDLVEC& rgpidl, BOOL fFromCache, BOOL fAllowNonCacheItems, PCONFOLDPIDLVEC& ppidl); #endif VOID FreeRgIDL( UINT cidl, LPITEMIDLIST * apidl);