class CADsExtMgr; class CADsExtMgr { public: /* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ; // // The IDispatch methods are the main interface of the Dispatch Manager. // STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo); STDMETHOD(GetTypeInfo)(THIS_ UINT itinfo, LCID lcid, ITypeInfo **pptinfo); STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPWSTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid); STDMETHOD(Invoke)(THIS_ DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr); CADsExtMgr::CADsExtMgr( IUnknown FAR * pUnkOuter ); CADsExtMgr::~CADsExtMgr(); static HRESULT CADsExtMgr::CreateExtMgr( IUnknown FAR * pUnkOuter, CAggregatorDispMgr * pDispMgr, LPTSTR pszClassName, CWinNTCredentials& Credentials, CADsExtMgr ** ppExtMgr ); HRESULT CADsExtMgr::QueryForAggregateeInterface( REFIID riid, LPVOID FAR * ppv ); HRESULT CADsExtMgr::LoadExtensions( CWinNTCredentials & Cred ); HRESULT CADsExtMgr::FinalInitializeExtensions(); STDMETHODIMP GetCLSIDForIID( REFIID riid, long lFlags, CLSID *pCLSID ); STDMETHODIMP GetObjectByCLSID( CLSID clsid, IUnknown *pUnkOuter, REFIID riid, void **ppInterface ); STDMETHODIMP GetCLSIDForNames( LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId, long lFlags, CLSID *pCLSID ); protected: HRESULT CheckAndPrefixExtIDArray( IN DWORD dwExtensionID, IN unsigned int cDispids, IN OUT DISPID * rgDispids ); HRESULT CheckAndPrefixExtID( IN DWORD dwExtensionID, IN DISPID dispid, IN OUT DISPID * pDispid ); HRESULT LoadExtensionsIfReqd(void); PCLASS_ENTRY _pClassEntry; CAggregatorDispMgr * _pDispMgr; IUnknown FAR * _pUnkOuter; CWinNTCredentials _Credentials; BOOL _fExtensionsLoaded; }; HRESULT ADSILoadExtensionManager( LPWSTR pszClassName, IUnknown * pUnkOuter, CAggregatorDispMgr * pDispMgr, CWinNTCredentials& Credentials, CADsExtMgr ** ppExtMgr ); void FreeClassEntry( PCLASS_ENTRY pClassEntry );