从扩展获取 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();
}
使用接口后,应立即释放该接口。 如果扩展具有对聚合器的开放引用,则已创建循环引用,聚合器无法释放扩展。 因此,聚合器无法释放,结果是应用程序中的内存泄漏。