class FAR CWinNTSchemaEnum : public CWinNTEnumVariant { public: // IEnumVARIANT methods STDMETHOD(Next)( ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched); static HRESULT Create( CWinNTSchemaEnum FAR* FAR* ppenumvariant, BSTR bstrADsPath, BSTR bstrDomainName, VARIANT vFilter, CWinNTCredentials& Credentials ); CWinNTSchemaEnum(); ~CWinNTSchemaEnum(); HRESULT EnumObjects( ULONG cElements, VARIANT FAR * pvar, ULONG FAR * pcElementFetched ); private: ObjectTypeList FAR *_pObjList; BSTR _bstrName; BSTR _bstrADsPath; DWORD _dwCurrentEntry; DWORD _dwPropCurrentEntry; CWinNTCredentials _Credentials; HRESULT CWinNTSchemaEnum::GetClassObject( IDispatch **ppDispatch ); HRESULT EnumClasses( ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched ); HRESULT CWinNTSchemaEnum::GetSyntaxObject( IDispatch **ppDispatch ); HRESULT CWinNTSchemaEnum::GetPropertyObject( IDispatch ** ppDispatch ); HRESULT EnumSyntaxObjects( ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched ); HRESULT CWinNTSchemaEnum::EnumObjects( DWORD ObjectType, ULONG cElements, VARIANT FAR * pvar, ULONG FAR * pcElementFetched ); HRESULT CWinNTSchemaEnum::EnumProperties( ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched ); }; class FAR CWinNTClassEnum : public CWinNTEnumVariant { public: // IEnumVARIANT methods STDMETHOD(Next)( ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched); static HRESULT Create( CWinNTClassEnum FAR* FAR* ppenumvariant, BSTR bstrADsPath, BSTR bstrParent, PROPERTYINFO *aPropertyInfo, DWORD cPropertyInfo, VARIANT vFilter ); CWinNTClassEnum( PROPERTYINFO *aPropertyInfo, DWORD cPropertyInfo ); ~CWinNTClassEnum(); private: DWORD _dwCurrentEntry; BSTR _bstrADsPath; BSTR _bstrParent; PROPERTYINFO *_aPropertyInfo; DWORD _cPropertyInfo; };