diff --git a/reactos/dll/win32/netshell/enumlist.h b/reactos/dll/win32/netshell/enumlist.h new file mode 100644 index 00000000000..c5c0d76665d --- /dev/null +++ b/reactos/dll/win32/netshell/enumlist.h @@ -0,0 +1,48 @@ +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; + LPITEMIDLIST pidl; +} ENUMLIST, *LPENUMLIST; + +class CEnumIDList: + public IEnumIDList +{ + public: + CEnumIDList(); + BOOL AddToEnumList(LPITEMIDLIST 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, LPITEMIDLIST *rgelt, ULONG *pceltFetched); + virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt); + virtual HRESULT STDMETHODCALLTYPE Reset(); + virtual HRESULT STDMETHODCALLTYPE Clone(IEnumIDList **ppenum); + + private: + LONG ref; + LPENUMLIST mpFirst; + LPENUMLIST mpLast; + LPENUMLIST mpCurrent; +};