WindowsXP-SP1/ds/adsi/ldap/cextmgr.hxx
2020-09-30 16:53:49 +02:00

117 lines
2.5 KiB
C++

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
);