Share via


확장에서 ADSI 인터페이스 가져오기

확장은 바인딩하는 디렉터리 개체에서 데이터를 가져와야 하는 경우가 많습니다. 예를 들어 컴퓨터 개체의 확장은 디렉터리에서 현재 개체의 dnsHostName 을 가져올 수 있습니다. 이 작업은 집계에 대한 IUnknown 인터페이스에서 QueryInterface 호출을 실행하여 쉽게 수행할 수 있습니다.

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();
}

인터페이스를 사용한 직후에 해제해야 합니다. 확장에 집계에 대한 열린 참조가 있는 경우 순환 참조를 만들었으며 집계자는 확장을 해제할 수 없습니다. 따라서 집계를 해제할 수 없으며 결과적으로 애플리케이션에서 메모리 누수가 발생합니다.