Scelta di un'interfaccia per l'associazione
Quando un oggetto directory è associato a , il chiamante specifica il tipo di interfaccia ADSI desiderata. Tutti gli oggetti directory ADSI supportano l'interfaccia IADs . Un oggetto ADSI può supportare anche altre interfacce. Le interfacce effettive supportate dall'oggetto dipendono dalla classe dell'oggetto . Ad esempio, un oggetto utente supporta l'interfaccia IADsUser, ma non supporterà l'interfaccia IADsComputer.
I client di automazione devono usare le interfacce IAD* perché queste interfacce sono interfacce duali che forniscono un livello maggiore di astrazione e forniscono dati usando il tipo di dati VARIANT .
Oltre alle interfacce IAD*, i client C/C++ possono usare le interfacce IDirectoryObject e IDirectorySearch. Queste interfacce non sono a doppia interfaccia e non supportano l'automazione. Queste interfacce offrono un maggiore controllo sugli attributi da recuperare e consentire l'accesso ai dati non elaborati archiviati in una proprietà. Ad esempio, quando il metodo IADs::Get viene usato per recuperare l'attributo ntSecurityDescriptor per un oggetto, il metodo IADs::Get fornisce un puntatore all'interfaccia IDispatch che supporta l'interfaccia IADsSecurityDescriptor. L'interfaccia IADsSecurityDescriptor viene fornita da ADSI per rappresentare un descrittore di sicurezza. In confronto, quando il metodo IDirectoryObject::GetObjectAttributes viene usato per recuperare l'attributo ntSecurityDescriptor, IDirectoryObject::GetObjectAttributes fornisce una matrice di byte che è possibile eseguire il cast a una struttura edizione StandardCURITY_DESCRIPTOR. Le API di sicurezza Win32 possono essere usate con questi dati per modificare il descrittore di sicurezza.