class CNDSGenObject; class CNDSGenObject : INHERIT_TRACKING, public CCoreADsObject, public ISupportErrorInfo, public IADs, public IADsContainer, public IDirectoryObject, public IDirectorySearch, public IDirectorySchemaMgmt, public IADsPropertyList { public: /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ; DECLARE_STD_REFCOUNTING DECLARE_IDispatch_METHODS DECLARE_ISupportErrorInfo_METHODS DECLARE_IADs_METHODS DECLARE_IADsPropertyList_METHODS DECLARE_IADsContainer_METHODS DECLARE_IDirectoryObject_METHODS DECLARE_IDirectorySearch_METHODS DECLARE_IDirectorySchemaMgmt_METHODS CNDSGenObject::CNDSGenObject(); CNDSGenObject::~CNDSGenObject(); static HRESULT CNDSGenObject::CreateGenericObject( BSTR bstrADsPath, BSTR ClassName, CCredentials& Credentials, DWORD dwObjectState, REFIID riid, void **ppvObj ); static HRESULT CNDSGenObject::CreateGenericObject( BSTR Parent, BSTR CommonName, BSTR ClassName, CCredentials& Credentials, DWORD dwObjectState, REFIID riid, void **ppvObj ); static HRESULT CNDSGenObject::AllocateGenObject( CCredentials& Credentials, CNDSGenObject ** ppGenObject ); STDMETHOD(GetInfo)( BOOL fExplicit ); HRESULT CNDSGenObject::NDSSetObject(); HRESULT CNDSGenObject::NDSCreateObject(); void CNDSGenObject::InitSearchPrefs(); protected: IUnknown FAR * _pOuterUnknown; BOOL _fIsAggregated; VARIANT _vFilter; CPropertyCache FAR * _pPropertyCache; CDispatchMgr FAR * _pDispMgr; CCredentials _Credentials; NDS_SEARCH_PREF _SearchPref; }; HRESULT ConvertSafeArrayToVariantArray( VARIANT varSafeArray, PVARIANT * ppVarArray, PDWORD pdwNumVariants ); HRESULT ConvertByRefSafeArrayToVariantArray( VARIANT varSafeArray, PVARIANT * ppVarArray, PDWORD pdwNumVariants ); HRESULT CreatePropEntry( LPWSTR szPropName, DWORD ADsType, DWORD numValues, VARIANT varData, REFIID riid, LPVOID * ppDispatch ); HRESULT ConvertNdsValuesToVariant( BSTR bstrPropName, LPNDSOBJECT pNdsSrcObjects, DWORD dwSyntaxId, DWORD dwNumValues, PVARIANT pVarProp ); HRESULT ConvertVariantToNdsValues( VARIANT varData, LPWSTR szPropertyName, PDWORD pdwControlCode, PNDSOBJECT * ppNdsDestObjects, PDWORD pdwNumValues, PDWORD dwSyntaxId );