windows-nt/Source/XPSP1/NT/shell/ext/pstore/enumid.h
2020-09-26 16:20:57 +08:00

64 lines
1.4 KiB
C++

#ifndef ENUMID_H
#define ENUMID_H
#define PIDL_TYPE_PROVIDER 0
#define PIDL_TYPE_TYPE 1
#define PIDL_TYPE_SUBTYPE 2
#define PIDL_TYPE_ITEM 3
typedef struct {
DWORD dwType;
PST_KEY KeyType;
GUID guid; // guid associated with Pidl
} PIDL_CONTENT, *PPIDL_CONTENT, *LPPIDL_CONTENT;
// WCHAR Array follows.
class CEnumIDList : public IEnumIDList
{
protected:
LONG m_ObjRefCount;
public:
CEnumIDList(LPITEMIDLIST, BOOL);
~CEnumIDList();
//
// IUnknown methods
//
STDMETHOD (QueryInterface)(REFIID, LPVOID*);
STDMETHOD_ (DWORD, AddRef)();
STDMETHOD_ (DWORD, Release)();
//
// IEnumIDList
//
STDMETHOD (Next) (ULONG, LPITEMIDLIST*, ULONG *);
STDMETHOD (Skip) (ULONG);
STDMETHOD (Reset) (void);
STDMETHOD (Clone) (LPENUMIDLIST*);
private:
LPMALLOC m_pMalloc;
STDMETHOD (CreateIDList) (DWORD, PST_KEY, GUID *, LPCWSTR, LPITEMIDLIST *);
ULONG m_ulCurrent;
DWORD m_dwType;
PST_KEY m_KeyType;
GUID m_guidType;
GUID m_guidSubtype;
BOOL m_bEnumItems;
IEnumPStoreProviders *m_pIEnumProviders;
IPStore *m_pIPStoreProvider;
IEnumPStoreTypes *m_pIEnumTypes;
IEnumPStoreTypes *m_pIEnumTypesGlobal;
IEnumPStoreTypes *m_pIEnumSubtypes;
IEnumPStoreItems *m_pIEnumItems;
};
#endif // ENUMID_H