IADsContainer インターフェイス (iads.h)

IADsContainer インターフェイスを使用すると、ADSI コンテナー オブジェクトは、含まれている ADSI オブジェクトを作成、削除、および管理できます。 コンテナー オブジェクトは、ファイル システムなどの階層ディレクトリ ツリーを表し、ディレクトリ階層を整理します。

IADsContainer インターフェイスを使用して、包含オブジェクトを列挙するか、ライフサイクルを管理できます。 たとえば、ディレクトリ ツリー内を再帰的に移動します。 ADSI オブジェクトの IADsContainer インターフェイスに対してクエリを実行すると、オブジェクトに子があるかどうかを判断できます。 インターフェイスがサポートされていない場合、オブジェクトはリーフです。 それ以外の場合は、コンテナーです。 このプロセスは、新しく見つかったコンテナー オブジェクトに対して続行できます。 オブジェクトを作成、コピー、または削除するには、コンテナー オブジェクトに要求を送信してタスクを実行します。

継承

IADsContainer インターフェイスは、IDispatch インターフェイスから継承されます。 IADsContainer には、次の種類のメンバーもあります。

メソッド

IADsContainer インターフェイスには、これらのメソッドがあります。

 
IADsContainer::CopyHere

IADsContainer::CopyHere メソッドは、指定されたディレクトリ オブジェクトのコピーをこのコンテナーに作成します。
IADsContainer::Create

指定したスキーマ クラスのディレクトリ オブジェクトと、コンテナー内の指定した名前を作成する要求を設定します。
IADsContainer::D elete

指定したディレクトリ オブジェクトをこのコンテナーから削除します。
IADsContainer::get__NewEnum

コンテナーの列挙子オブジェクトを取得します。
IADsContainer::GetObject

コンテナー内のディレクトリ オブジェクトのインターフェイスを取得します。
IADsContainer::MoveHere

指定した オブジェクトを、このインターフェイスを実装するコンテナーに移動します。

注釈

オブジェクトがコンテナーかどうかを確認するには、オブジェクトの IADsClass.Container プロパティを使用します。

GUID (または SID) を使用してコンテナー オブジェクトにバインドする場合、コンテナー オブジェクトに対して特定の操作のみを実行できます。 これらの操作には、オブジェクト属性の検査と、オブジェクトの直接の子の列挙が含まれます。 これらの操作を次のコード例に示します。

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
con.Filter = Array("user")
For Each item In con
    debug.print item.Name " &  " of " & item.Class
Next

他のすべての操作 ( GetObjectCreateDeleteCopyHereMoveHere ) は、コンテナーの GUID 表現ではサポートされていません。 たとえば、次のコード例の最後の行でエラーが発生します。

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
Set obj = con.GetObject("user", "CN=Jeff Smith")

GUID (または SID) を使用したバインディングは、オーバーヘッドが少ないため、高速バインドを目的としているため、オブジェクトのイントロスペクションによく使用されます。

GUID (または SID) でバインドされたコンテナーのこれらのメソッドを呼び出すには、識別名を使用してオブジェクトに再バインドします。

Dim conGUID, conDN As IADsContainer
Dim obj As IADs
Set conGUID = GetObject("LDAP://svr/<GUID=xxxx>")
Set conDN=GetObject("LDAP://svr/" & conGUID.Get("distinguishedName"))
Set obj = conDN.GetObject("user", "CN=Jeff Smith")

オブジェクト GUID 表現の詳細については、「 IADs.GUID」を参照してください。

次のコード例では、ADSI オブジェクトがコンテナーであるかどうかを判断します。

Dim obj As IADs
Dim cls As IADsClass
On Error GoTo Cleanup

Set obj = GetObject("WinNT://myComputer,computer")
Set cls = GetObject(obj.Schema)
If (cls.Container = TRUE) Then
    MsgBox "The object is a container."
Else
    MsgBox "The object is a leaf."
End If

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set obj = Nothing
    Set cls = Nothing

次のコード例では、ADSI オブジェクトがコンテナーであるかどうかを判断します。

IADs *pADs = NULL;
IADsClass *pCls = NULL;
HRESULT hr = S_OK;
BSTR bstr;

hr = ADsGetObject(L"WinNT://myComputer,computer", IID_IADs, (void**)&pADs);
if(FAILED(hr)){return;}

pADs->get_Schema(&bstr);
hr = ADsGetObject(bstr, IID_IADsClass, (void**)&pCls);
pADs->Release();
SysFreeString(bstr);

if(FAILED(hr)){return;}

VARIANT_BOOL isContainer;
pCls->get_Container(&isContainer);

if(isContainer) 
    printf("Object is a container.\n");
else
    printf("Object is not a container.\n");

pCls->Release();

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー iads.h

こちらもご覧ください

オブジェクトの作成と削除

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch