Obtendo interfaces ADSI de sua extensão
Uma extensão geralmente precisa obter dados do objeto de diretório ao qual se vincula. Por exemplo, uma extensão para um objeto de computador pode desejar obter o dnsHostName do objeto atual do diretório. Isso pode ser facilmente alcançado emitindo uma chamada QueryInterface na interface IUnknown para o agregador.
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();
}
Você deve liberar a interface imediatamente após usá-lo. Se a extensão tiver uma referência aberta ao agregador, você criou uma referência circular e o agregador não poderá liberar a extensão. Portanto, o agregador não pode ser liberado e o resultado são vazamentos de memória em seu aplicativo.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de