mirror of
https://github.com/reactos/reactos.git
synced 2024-11-04 05:43:30 +00:00
527f2f9057
* Create a branch for some evul shell experiments. svn path=/branches/shell-experiments/; revision=61927
50 lines
1.2 KiB
C++
50 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;
|
|
LPITEMIDLIST pidl;
|
|
} ENUMLIST, *LPENUMLIST;
|
|
|
|
class CEnumIDList final :
|
|
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;
|
|
};
|