+++ /dev/null
-#pragma once
-
-typedef struct tagGUIDStruct
-{
- BYTE dummy; /* offset 01 is unknown */
- GUID guid; /* offset 02 */
-} GUIDStruct;
-
-#define PT_GUID 0x1F
-
-typedef struct tagPIDLDATA
-{
- BYTE type; /*00*/
- union
- {
- struct tagGUIDStruct guid;
- struct tagVALUEStruct value;
- } u;
-} PIDLDATA, *LPPIDLDATA;
-
-typedef struct tagENUMLIST
-{
- struct tagENUMLIST *pNext;
- PITEMID_CHILD pidl;
-} ENUMLIST, *LPENUMLIST;
-
-class CEnumIDList final :
- public IEnumIDList
-{
- public:
- CEnumIDList();
- BOOL AddToEnumList(PITEMID_CHILD pidl);
-
- // IUnknown
- virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID *ppvOut);
- virtual ULONG WINAPI AddRef();
- virtual ULONG WINAPI Release();
-
- // IEnumIDList
- virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, PITEMID_CHILD *rgelt, ULONG *pceltFetched);
- virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
- virtual HRESULT STDMETHODCALLTYPE Reset();
- virtual HRESULT STDMETHODCALLTYPE Clone(IEnumIDList **ppenum);
-
- private:
- ~CEnumIDList();
-
- LONG m_ref;
- LPENUMLIST m_pFirst;
- LPENUMLIST m_pLast;
- LPENUMLIST m_pCurrent;
-};