Condividi tramite


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.