#ifndef _CSMCATMANAGERENUMS_INCLUDE #define _CSMCATMANAGERENUMS_INCLUDE class CSCEnumCategories : public IEnumCATEGORYINFO { public: // IUnknown methods HRESULT _stdcall QueryInterface(REFIID riid, void** ppObject); ULONG _stdcall AddRef(); ULONG _stdcall Release(); // IEnumCATEGORYINFO methods HRESULT __stdcall Next(ULONG celt, CATEGORYINFO *rgelt, ULONG *pceltFetched); HRESULT __stdcall Skip(ULONG celt); HRESULT __stdcall Reset(void); HRESULT __stdcall Clone(IEnumCATEGORYINFO **ppenum); CSCEnumCategories(); HRESULT Initialize(WCHAR *szCategoryName, LCID lcid); ~CSCEnumCategories(); private: LCID m_lcid; ULONG m_dwRefCount; DWORD m_dwPosition; WCHAR m_szCategoryName[_MAX_PATH]; HANDLE m_hADs; ADS_SEARCH_HANDLE m_hADsSearchHandle; }; class CSCEnumCategoriesOfClass : public IEnumCATID { public: // IUnknown methods HRESULT _stdcall QueryInterface(REFIID riid, void** ppObject); ULONG _stdcall AddRef(); ULONG _stdcall Release(); // IEnumGUID methods HRESULT __stdcall Next(ULONG celt, GUID *rgelt, ULONG *pceltFetched); HRESULT __stdcall Skip(ULONG celt); HRESULT __stdcall Reset(void); HRESULT __stdcall Clone(IEnumGUID **ppenum); CSCEnumCategoriesOfClass(); HRESULT Initialize(CATID catid[], ULONG cCatid); ~CSCEnumCategoriesOfClass(); private: ULONG m_dwPosition; ULONG m_cCatid; CATID *m_catid; ULONG m_dwRefCount; }; class CSCEnumClassesOfCategories : public IEnumCLSID { public: // IUnknown methods HRESULT _stdcall QueryInterface(REFIID riid, void** ppObject); ULONG _stdcall AddRef(); ULONG _stdcall Release(); // IEnumGUID methods HRESULT __stdcall Next(ULONG celt, GUID *rgelt, ULONG *pceltFetched); HRESULT __stdcall Skip(ULONG celt); HRESULT __stdcall Reset(void); HRESULT __stdcall Clone(IEnumGUID **ppenum); CSCEnumClassesOfCategories(); HRESULT Initialize(ULONG cRequired, CATID rgcatidReq[], ULONG cImplemented, CATID rgcatidImpl[], WCHAR *szClassName); ~CSCEnumClassesOfCategories(); private: ULONG m_dwPosition; ULONG m_dwRefCount, m_cRequired, m_cImplemented; CATID *m_rgcatidReq, *m_rgcatidImpl; HANDLE m_hADs; ADS_SEARCH_HANDLE m_hADsSearchHandle; WCHAR m_szClassName[_MAX_PATH]; }; // extern ULONG g_dwRefCount; HRESULT GetCategoryProperty (IADs *pADs, CATEGORYINFO *pcatinfo, LCID lcid); HRESULT ImplSatisfied(ULONG cImplemented, CATID *ImplementedList, HANDLE hADs, ADS_SEARCH_HANDLE hADsSearchHandle); HRESULT ReqSatisfied(ULONG cAvailReq, CATID *AvailReq, HANDLE hADs, ADS_SEARCH_HANDLE hADsSearchHandle); #endif