Поделиться через


Интерфейс 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::P rivateGetIDsOfNames. Он вызывается после того, как ADSI определяет расширение для обслуживания отправки. Расширение может использовать сведения о типе для получения DISPID, то есть с помощью функции DispGetIDsOfNames.

ADSI обычно вызывает метод PrivateInvoke после вызова функции PrivateGetIDsOfNames. Расширение должно вызывать фактический метод, который он реализует. Кроме того, расширение может использовать сведения о типе и вызывать функцию DispInvoke.

Все параметры имеют то же значение, что и параметры в стандартном методе IDispatch::Invoke .