Interfaccia IADsExtension
L'interfaccia IADsExtension è definita nel modo seguente:
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;
};
L'aggregatore (ADSI) chiama il metodo IADsExtension::Operate . L'estensione deve interpretare il parametro dwCode e ogni parametro varData , in base alla documentazione del provider.
L'aggregatore (ADSI), chiama il metodo IADsExtension::P rivateGetIDsOfNames. Viene chiamato dopo che ADSI determina l'estensione per il servizio dell'invio. L'estensione può usare le informazioni sul tipo per ottenere il DISPID, ovvero usando la funzione DispGetIDsOfNames.
ADSI chiama normalmente il metodo PrivateInvoke dopo aver chiamato la funzione PrivateGetIDsOfNames. L'estensione deve chiamare il metodo effettivo implementato. In alternativa, l'estensione può usare le informazioni sul tipo e chiamare la funzione DispInvoke.
Tutti i parametri hanno lo stesso significato dei parametri nel metodo IDispatch::Invoke standard.