Recupero di interfacce ADSI dall'estensione
Un'estensione spesso deve ottenere dati dall'oggetto directory a cui è associato. Ad esempio, un'estensione per un oggetto computer può voler ottenere dnsHostName dell'oggetto corrente dalla directory. Questa operazione può essere ottenuta facilmente eseguendo una chiamata QueryInterface sull'interfaccia IUnknown per l'aggregatore.
HRESULT hr;
IADs *pADs; ' ADSI Interface to get/set attributes.
hr = m_pOuterUnk->QueryInterface(IID_IADs,(void**)&pADs);
if ( SUCCEEDED(hr) )
{
VARIANT var;
VariantInit(&var);
hr = pADs ->Get(_bstr_t("dnsHostName"), &var);
if ( SUCCEEDED(hr) )
{
printf("%S\n", V_BSTR(&var));
}
VariantClear(&var);
pADs->Release();
}
È consigliabile rilasciare l'interfaccia immediatamente dopo l'uso. Se l'estensione ha un riferimento aperto all'aggregatore, è stato creato un riferimento circolare e l'aggregatore non può rilasciare l'estensione. Pertanto, l'aggregatore non può essere rilasciato e il risultato è la perdita di memoria nell'applicazione.