mirror of
https://github.com/reactos/reactos.git
synced 2024-10-30 19:41:57 +00:00
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
#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;
|
|
};
|