IADs インターフェイスの使用
ADSI では、ディレクトリ サービスの各要素は ADSI オブジェクトによって表されます。これは、標準の COM IUnknown インターフェイスと IDispatch および IADs インターフェイスをサポートするコンポーネント オブジェクト モデル (COM) オブジェクトです。 IAD は、ADSI オブジェクトの基本的なメインテナンス関数を用意しています。
各 ADSI オブジェクトは、次の機能を果たすこのインターフェイスをサポートする必要があります。
- 名前、クラス、または ADsPath でオブジェクト ID を指定します。
- オブジェクトの作成と削除を管理するオブジェクト コンテナーを特定します。
- オブジェクト スキーマ定義を取得します。
- オブジェクト属性をプロパティ キャッシュに読み込み、変更を永続ディレクトリ ストアにコミットします。
- プロパティ キャッシュ内のオブジェクト属性値にアクセスして変更します。
IADs インターフェイスは、ADSI オブジェクトがネットワーク管理者とディレクトリ サービス プロバイダーに、基になるさまざまなディレクトリ サービスを効率的で一貫性のある表現を提供するように設計されています。
上の図は、基本的なインターフェイス IADs、IADsPropertyList、IUnknown、IDirectoryObjectおよび 、IDispatchIDispatch をサポートする汎用 ADSI オブジェクトを示しています。 このような ADSI オブジェクトは、サポートされているインターフェイスを介して、基になるディレクトリ サービスのデータ ストアからのデータを管理します。 このデータはオブジェクトのプロパティと呼ばれ、これらのプロパティを取得および設定するルーチンはプロパティ メソッドと呼ばれます。 読み取り専用プロパティには、プロパティ値を取得する 1 つのプロパティ メソッドがあります。 読み取り/書き込みプロパティには、値を設定するメソッドと値を取得するメソッドの 2 つのメソッドがあります。 プロパティは、プロパティ キャッシュを使用して各 ADSI オブジェクトに実装されます。 IADs::get_ADsPath および IADs::p ut_ADsPath は、プロパティ メソッドの例です。 プロパティ メソッドは、プロパティへの直接参照を可能にする Visual Basic やその他の Automation クライアントには認識されません。 たとえば、Visual Basic は IADs::ADsPath 構文を使用して IADs::ADsPath を直接参照します。 詳細については、インターフェイス プロパティ メソッド をご覧ください。
さらに、ADSI オブジェクトは他の ADSI オブジェクトとインタラクトし、メソッドを介して名前空間に直接作用します。 メソッドはすぐに実行されます。 メソッドの例としては、IADs::SetInfo と IADs::GetInfo があります。
プロパティ、プロパティ メソッド、およびメソッドはすべて、標準の COM インターフェイスを介してアクセスされます。
ADSI オブジェクトは、その ADsPath によって一意に識別されます。 たとえば、LDAP 名前空間の ADsPath は "LDAP://MyServer/DC=Fabrikam,DC=COM" です。 ADsPathの詳細については、「ADSIバインディング 」を参照してください。 COM モニカーに慣れているプログラマにとって、これは概念的には COM モニカーの表示名に似ています。
ADSI コンテナー オブジェクトと呼ばれる他の ADSI オブジェクトを含む ADSI オブジェクトは、オブジェクトに含まれる ADSI オブジェクトの作成、削除、および列挙を管理するメソッドとプロパティを提供する IADsContainer インターフェイスもサポートしています。 次の図は、ADSI コンテナー オブジェクトを示しています。
ほとんどの ADSI オブジェクトは、他のオブジェクトに含まれています。 メインコンテナーがない ADSI オブジェクトは、最上位の ADSI 名前空間 オブジェクト ("ADS:") だけです。
コンテナー オブジェクトの IADs::SetInfo メソッドは、IADsContainer::Create メソッドで作成されたオブジェクトに加えて、ADSI コンテナー オブジェクトのキャッシュされたプロパティをストレージに永続的に格納します。 IADsContainer::D elete はプロパティ キャッシュに影響しませんが、このオブジェクトによって表される基になる名前空間ディレクトリ要素を削除します。