Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.4 KiB

  1. #ifndef ENUMID_H
  2. #define ENUMID_H
  3. #define PIDL_TYPE_PROVIDER 0
  4. #define PIDL_TYPE_TYPE 1
  5. #define PIDL_TYPE_SUBTYPE 2
  6. #define PIDL_TYPE_ITEM 3
  7. typedef struct {
  8. DWORD dwType;
  9. PST_KEY KeyType;
  10. GUID guid; // guid associated with Pidl
  11. } PIDL_CONTENT, *PPIDL_CONTENT, *LPPIDL_CONTENT;
  12. // WCHAR Array follows.
  13. class CEnumIDList : public IEnumIDList
  14. {
  15. protected:
  16. LONG m_ObjRefCount;
  17. public:
  18. CEnumIDList(LPITEMIDLIST, BOOL);
  19. ~CEnumIDList();
  20. //
  21. // IUnknown methods
  22. //
  23. STDMETHOD (QueryInterface)(REFIID, LPVOID*);
  24. STDMETHOD_ (DWORD, AddRef)();
  25. STDMETHOD_ (DWORD, Release)();
  26. //
  27. // IEnumIDList
  28. //
  29. STDMETHOD (Next) (ULONG, LPITEMIDLIST*, ULONG *);
  30. STDMETHOD (Skip) (ULONG);
  31. STDMETHOD (Reset) (void);
  32. STDMETHOD (Clone) (LPENUMIDLIST*);
  33. private:
  34. LPMALLOC m_pMalloc;
  35. STDMETHOD (CreateIDList) (DWORD, PST_KEY, GUID *, LPCWSTR, LPITEMIDLIST *);
  36. ULONG m_ulCurrent;
  37. DWORD m_dwType;
  38. PST_KEY m_KeyType;
  39. GUID m_guidType;
  40. GUID m_guidSubtype;
  41. BOOL m_bEnumItems;
  42. IEnumPStoreProviders *m_pIEnumProviders;
  43. IPStore *m_pIPStoreProvider;
  44. IEnumPStoreTypes *m_pIEnumTypes;
  45. IEnumPStoreTypes *m_pIEnumTypesGlobal;
  46. IEnumPStoreTypes *m_pIEnumSubtypes;
  47. IEnumPStoreItems *m_pIEnumItems;
  48. };
  49. #endif // ENUMID_H