Choix d’une interface pour la liaison
Lorsqu’un objet d’annuaire est lié à, l’appelant spécifie le type d’interface ADSI souhaité. Tous les objets d’annuaire ADSI prennent en charge l’interface IADs . Un objet ADSI peut également prendre en charge d’autres interfaces. Les interfaces réelles prises en charge par l’objet dépendent de la classe de l’objet . Par exemple, un objet utilisateur prend en charge l’interface IADsUser , mais ne prend pas en charge l’interface IADsComputer .
Les clients Automation doivent utiliser les interfaces IAD* , car ces interfaces sont des interfaces doubles qui fournissent un niveau d’abstraction plus élevé et fournissent des données à l’aide du type de données VARIANT .
En plus des interfaces IADs*, les clients C/C++ peuvent utiliser les interfaces IDirectoryObject et IDirectorySearch . Ces interfaces ne sont pas des interfaces doubles et ne prennent pas en charge l’automatisation. Ces interfaces fournissent un plus grand contrôle sur les attributs à récupérer et autorisent l’accès aux données brutes stockées dans une propriété. Par exemple, lorsque la méthode IADs::Get est utilisée pour récupérer l’attribut ntSecurityDescriptor pour un objet, la méthode IADs::Get fournit un pointeur d’interface IDispatch qui prend en charge l’interface IADsSecurityDescriptor . L’interface IADsSecurityDescriptor est fournie par ADSI pour représenter un descripteur de sécurité. En comparaison, lorsque la méthode IDirectoryObject::GetObjectAttributes est utilisée pour récupérer l’attribut ntSecurityDescriptor , IDirectoryObject::GetObjectAttributes fournit un tableau d’octets pouvant être convertis en structure SECURITY_DESCRIPTOR . Les API de sécurité Win32 peuvent être utilisées avec ces données pour manipuler le descripteur de sécurité.