IADsExtension 接口

IADsExtension 接口定义如下:

IADsExtension : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Operate( 
            /* [in] */ DWORD dwCode,
            /* [in] */ VARIANT varData1,
            /* [in] */ VARIANT varData2,
            /* [in] */ VARIANT varData3) = 0;
 
        virtual HRESULT STDMETHODCALLTYPE PrivateGetIDsOfNames( 
            /* [in] */ REFIID riid,
            /* [in] */ OLECHAR **rgszNames,
            /* [in] */ unsigned int cNames,
            /* [in] */ LCID lcid,
            /* [out] */ DISPID *rgDispid) = 0;
 
        virtual HRESULT STDMETHODCALLTYPE PrivateInvoke( 
            /* [in] */ DISPID dispidMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [in] */ DISPPARAMS *pdispparams,
            /* [out] */ VARIANT *pvarResult,
            /* [out] */ EXCEPINFO *pexcepinfo,
            /* [out] */ unsigned int *puArgErr) = 0;
    };

聚合器 (ADSI) 会调用 IADsExtension::Operate 方法。 扩展应根据提供程序的文档解释 dwCode 参数和每个 varData 参数。

聚合器 (ADSI) 会调用 IADsExtension::PrivateGetIDsOfNames 方法。 在 ADSI 确定为调度提供服务的扩展后,会调用该扩展。 扩展可以使用类型信息来获取 DISPID,即使用 DispGetIDsOfNames 函数。

ADSI 通常会在调用 PrivateGetIDsOfNames 函数后调用 PrivateInvoke 方法。 扩展应调用其实现的实际方法。 或者,该扩展可以使用类型信息并调用 DispInvoke 函数。

所有参数的含义与标准 IDispatch::Invoke 方法中的参数相同。