[REACTOS] Fix a number of Get/SetWindowsLong*Ptr* issues and use GWLP_* instead of...
[reactos.git] / dll / shellext / netshell / enumlist.h
1 #pragma once
2
3 typedef struct tagGUIDStruct
4 {
5 BYTE dummy; /* offset 01 is unknown */
6 GUID guid; /* offset 02 */
7 } GUIDStruct;
8
9 #define PT_GUID 0x1F
10
11 typedef struct tagPIDLDATA
12 {
13 BYTE type; /*00*/
14 union
15 {
16 struct tagGUIDStruct guid;
17 struct tagVALUEStruct value;
18 } u;
19 } PIDLDATA, *LPPIDLDATA;
20
21 typedef struct tagENUMLIST
22 {
23 struct tagENUMLIST *pNext;
24 PITEMID_CHILD pidl;
25 } ENUMLIST, *LPENUMLIST;
26
27 class CEnumIDList final :
28 public IEnumIDList
29 {
30 public:
31 CEnumIDList();
32 BOOL AddToEnumList(PITEMID_CHILD pidl);
33
34 // IUnknown
35 virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID *ppvOut);
36 virtual ULONG WINAPI AddRef();
37 virtual ULONG WINAPI Release();
38
39 // IEnumIDList
40 virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, PITEMID_CHILD *rgelt, ULONG *pceltFetched);
41 virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
42 virtual HRESULT STDMETHODCALLTYPE Reset();
43 virtual HRESULT STDMETHODCALLTYPE Clone(IEnumIDList **ppenum);
44
45 private:
46 ~CEnumIDList();
47
48 LONG m_ref;
49 LPENUMLIST m_pFirst;
50 LPENUMLIST m_pLast;
51 LPENUMLIST m_pCurrent;
52 };