バインド用インターフェイスの選択
ディレクトリオブジェクトがバインドされている場合、呼び出し元は必要なADSIインターフェイスの種類を指定します。 すべてのADSIディレクトリオブジェクトは、IADsインターフェイスをサポートしています。 ADSIオブジェクトは、他のインターフェイスもサポートできます。 オブジェクトによってサポートされる実際のインターフェイスは、オブジェクトのクラスによって異なります。 たとえば、ユーザーオブジェクトはIADsUserインターフェイスをサポートしますが、IADsComputerインターフェイスはサポートしません。
オートメーションクライアントは、IADs*インターフェイスを使用する必要があります。これらのインターフェイスは、より高いレベルの抽象化を提供し、VARIANTデータ型を使用してデータを提供するデュアルインターフェイスであるためです。
IADs*インターフェイスに加えて、C/C++クライアントはIDirectoryObjectインターフェイスとIDirectorySearchインターフェイスを使用できます。 これらのインターフェイスはデュアルインターフェイスではなく、オートメーションをサポートしていません。 これらのインターフェイスは、取得する属性を正確に制御し、プロパティに格納されている生データへのアクセスを許可します。 たとえば、IADs :: Getメソッドを使用してオブジェクトのntSecurityDescriptor属性を取得する場合、IADs :: Getメソッドは、IADsSecurityDescriptorインターフェイスをサポートするIDispatchインターフェイスポインターを提供します。 IADsSecurityDescriptorインターフェイスは、セキュリティ記述子を表すためにADSIによって提供されます。 これに対し、IDirectoryObject :: GetObjectAttributesメソッドを使用してntSecurityDescriptor属性を取得する場合、IDirectoryObject :: GetObjectAttributesは、SECURITY_DESCRIPTOR構造体にキャストできるバイト配列を提供します。 Win32 セキュリティ API をこのデータと共に使用して、セキュリティ記述子を操作できます。