IADsExtension Usage
IADsExtension is an optional interface implemented by the extension writer when at least one of the following conditions are met:
- The extension component requires an initialization notification as defined by ADSI_EXT_dwCode in the Operate method.
- The extension supports a dual or dispatch interface.
If an extension component supports the IADsExtension interface for the first reason, the IADsExtension::PrivateGetIDsOfNames and IADsExtension::PrivateInvoke methods can return E_NOTIMPL. Alternatively, if an extension component supports a dual or dispatch interface , the Operate method can ignore the data and return an HRESULT of E_NOTIMPL.
The following code shows an extension implementing IADsExtension.
STDMETHOD(Operate)(ULONG dwCode, VARIANT varData1, VARIANT varData2, VARIANT varData3)
{
HRESULT hr = S_OK;
switch (dwCode)
{
case ADS_EXT_INIT:
// Prompt for a credential.
// MessageBox(NULL, "INITCRED", "ADsExt", MB_OK);
break;
default:
hr = E_FAIL;
break;
}
return hr;
}
STDMETHOD(PrivateGetIDsOfNames)(REFIID riid, OLECHAR ** rgszNames, unsigned int cNames, LCID lcid, DISPID * rgdispid)
{
if (rgdispid == NULL)
{
return E_POINTER;
}
return DispGetIDsOfNames(m_pTypeInfo, rgszNames, cNames, rgdispid);
}
STDMETHOD(PrivateInvoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr)
{
return DispInvoke( (IHelloWorld*)this,
m_pTypeInfo,
dispidMember,
wFlags,
pdispparams,
pvarResult,
pexcepinfo,
puArgErr );
}
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for