IADsExtension Interface
A interface IADsExtension é definida da seguinte maneira:
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;
};
O agregador (ADSI) chama o método IADsExtension::Operate . A extensão deve interpretar o parâmetro dwCode e cada parâmetro varData , de acordo com a documentação do provedor.
O agregador (ADSI), chama o método IADsExtension::P rivateGetIDsOfNames. Ele é chamado depois que o ADSI determina a extensão para atender o despacho. A extensão poderia usar as informações de tipo para obter o DISPID, ou seja, usando a função DispGetIDsOfNames.
ADSI normalmente chama o método PrivateInvoke depois de chamar a função PrivateGetIDsOfNames. A extensão deve chamar o método real que ele implementa. Como alternativa, a extensão pode usar informações de tipo e chamar a função DispInvoke.
Todos os parâmetros têm o mesmo significado que os parâmetros no método IDispatch::Invoke padrão.