Synchronize with trunk revision 59636 (just before Alex's CreateProcess revamp).
[reactos.git] / dll / win32 / netshell / enumlist.h
1 typedef struct tagGUIDStruct
2 {
3 BYTE dummy; /* offset 01 is unknown */
4 GUID guid; /* offset 02 */
5 } GUIDStruct;
6
7 #define PT_GUID 0x1F
8
9 typedef struct tagPIDLDATA
10 {
11 BYTE type; /*00*/
12 union
13 {
14 struct tagGUIDStruct guid;
15 struct tagVALUEStruct value;
16 } u;
17 } PIDLDATA, *LPPIDLDATA;
18
19 typedef struct tagENUMLIST
20 {
21 struct tagENUMLIST *pNext;
22 LPITEMIDLIST pidl;
23 } ENUMLIST, *LPENUMLIST;
24
25 class CEnumIDList final :
26 public IEnumIDList
27 {
28 public:
29 CEnumIDList();
30 BOOL AddToEnumList(LPITEMIDLIST pidl);
31
32 // IUnknown
33 virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID *ppvOut);
34 virtual ULONG WINAPI AddRef();
35 virtual ULONG WINAPI Release();
36
37 // IEnumIDList
38 virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPITEMIDLIST *rgelt, ULONG *pceltFetched);
39 virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
40 virtual HRESULT STDMETHODCALLTYPE Reset();
41 virtual HRESULT STDMETHODCALLTYPE Clone(IEnumIDList **ppenum);
42
43 private:
44 LONG ref;
45 LPENUMLIST mpFirst;
46 LPENUMLIST mpLast;
47 LPENUMLIST mpCurrent;
48 };