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 pszClassNames[], long lnNumClasses, CCredentials *pCreds, CADsExtMgr ** ppExtMgr ); HRESULT CADsExtMgr::QueryForAggregateeInterface( REFIID riid, LPVOID FAR * ppv ); HRESULT CADsExtMgr::LoadExtensions( CCredentials & Cred ); HRESULT CADsExtMgr::FinalInitializeExtensions(); STDMETHOD (GetCLSIDForIID)( REFIID riid, long lFlags, CLSID *pCLSID ); STDMETHOD (GetObjectByCLSID)( CLSID clsid, IUnknown *pUnkOuter, REFIID riid, void **ppInterface ); STDMETHOD (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; BOOL _fExtensionsLoaded; // // Do not free owning object will free. // CCredentials * _pCreds; }; void FreeClassEntry( PCLASS_ENTRY pClassEntry );