Escolhendo uma interface para vinculação

Quando um objeto de diretório é vinculado, o chamador especifica o tipo de interface ADSI desejado. Todos os objetos de diretório ADSI oferecem suporte à interface IADs. Um objeto ADSI também pode oferecer suporte a outras interfaces. As interfaces reais suportadas pelo objeto dependem da classe do objeto. Por exemplo, um objeto de usuário oferece suporte à interface IADsUser, mas não oferece suporte à interface IADsComputer.

Os clientes de automação devem usar as interfaces IADs* porque essas interfaces são interfaces duplas que fornecem um nível maior de abstração e fornecem dados usando o tipo de dados VARIANT .

Além das interfaces IADs*, os clientes C/C++ podem usar as interfaces IDirectoryObject e IDirectorySearch. Essas interfaces não são dual-interfaces e não suportam automação. Essas interfaces fornecem maior controle sobre exatamente quais atributos recuperar e permitem o acesso aos dados brutos armazenados em uma propriedade. Por exemplo, quando o método IADs::Get é usado para recuperar o atributo ntSecurityDescriptor de um objeto, o método IADs::Get fornece um ponteiro de interface IDispatch que oferece suporte à interface IADsSecurityDescriptor. A interface IADsSecurityDescriptor é fornecida pelo ADSI para representar um descritor de segurança. Em comparação, quando o método IDirectoryObject::GetObjectAttributes é usado para recuperar o atributo ntSecurityDescriptor, IDirectoryObject::GetObjectAttributes fornece uma matriz de bytes que pode ser convertida em uma estrutura SECURITY_DESCRIPTOR. As APIs de segurança do Win32 podem ser usadas com esses dados para manipular o descritor de segurança.