IADsContainer プロパティ メソッド
IADsContainer インターフェイスのプロパティ メソッドは、次の表で説明するプロパティを取得または設定します。 プロパティ メソッドの詳細と一般的な説明については、「インターフェイス プロパティ メソッド」を参照してください。
プロパティ
-
Count
-
-
アクセスの種類: 読み取り専用
-
スクリプト データ型: LONG
-
// C++ method syntax HRESULT get_Count( [out] LONG* plCount );
コンテナー内の項目の数を取得します。 Filter が設定されている場合、Count はフィルター処理されたアイテムの数のみを返します。
-
-
Assert
-
-
アクセスの種類: 読み取り/書き込み
-
スクリプト データ型: VARIANT
-
// C++ method syntax HRESULT get_Filter( [out] VARIANT* pvFilter ); HRESULT put_Filter( [in] VARIANT vFilter );
特定の列挙体のオブジェクト クラスを選択するために使用するフィルターを取得または設定します。 これはバリアント配列であり、各要素はスキーマ クラスの名前です。 Filter が設定されていないか空に設定されていない場合、すべてのクラスのすべてのオブジェクトが列挙子によって取得されます。
-
-
[ヒント]
-
-
アクセスの種類: 読み取り/書き込み
-
スクリプト データ型: VARIANT
-
// C++ method syntax HRESULT get_Hints( [out] VARIANT* pvHints ); HRESULT put_Hints( [in] VARIANT vHints );
BSTR 文字列のバリアント配列。 各要素は、スキーマ定義で見つかったプロパティの名前を識別します。 vHints パラメーターを使用すると、クライアントは列挙オブジェクトごとに読み込む属性を指定できます。 このようなデータは、ネットワーク アクセスを最適化するために使用できます。 ただし、正確な実装はプロバイダー固有であり、現在、WinNT プロバイダーでは使用されていません。
-
解説
IADsContainer::get__NewEnum および IADsContainer::get_Count の列挙プロセスは、キャッシュ内の包含オブジェクトに対して実行されます。 コンテナーに多数のオブジェクトが含まれている場合、パフォーマンスが影響を受ける可能性があります。 パフォーマンスを向上させるには、キャッシュをオフにし、適切なページ サイズを設定し、IDirectorySearch インターフェイスを使用します。 このため、 get_Count プロパティは Microsoft LDAP プロバイダーではサポートされていません。
例
次の Visual Basic コード例は、IADsContainer のプロパティ メソッドを使用する方法を示しています。
Dim cont As IADsContainer
Dim usr As IADsUser
On Error GoTo Cleanup
Set cont = GetObject("LDAP://OU=Sales, DC=Fabrikam, DC=COM")
cont.Hints = Array("adminDescription") ' Load this attribute. Optional.
Debug.Print cont.Get("adminDescription")
' Filter users.
cont.Filter = Array("user")
For Each usr In cont
Debug.Print usr.Name
Next
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set cont = Nothing
Set usr = Nothing
次の C++ コード例は、IADsContainer のプロパティ メソッドを使用する方法を示しています。 簡潔にするために、エラーチェックは省略されます。
IADsContainer *pCont;
IADs *pChild;
IADs *pADs;
HRESULT hr = ADsGetObject(L"LDAP://OU=Sales,DC=Fabrikam,DC=COM",
IID_IADsContainer,
(void**)&pCont);
if(FAILED(hr)){goto Cleanup;}
LPWSTR pszArray[] = { L"adminDescription" };
DWORD dwNumber = sizeof(pszArray)/sizeof(LPWSTR);
hr = ADsBuildVarArrayStr( pszArray, dwNumber, &var);
if(FAILED(hr)){goto Cleanup;}
hr = pCont->put_Hints( var );
if(FAILED(hr)){goto Cleanup;}
VariantClear(&var);
hr = pCont->QueryInterface(IID_IADs, (void**)pADs);
if(FAILED(hr)){goto Cleanup;}
hr = pADs->Get(CComBSTR("adminDescription"), var);
LPWSTR pszUsers = {L"user"};
dwNumber = sizeof(pszUsers)/sizeof(LPWSTR);
hr = ADsBuildVarArrayStr(pszUsers, dwNumber, &var);
hr = pCont->put_Filter( var );
VariantClear(&var);
// Enumerate user objects in the container.
IEnumVARIANT *pEnum = NULL;
hr = ADsBuildEnumerator(pCont, &pEnum);
pCont->Release(); // Not required when users are enumerated.
ULONG lFetch;
VariantClear(&var);
while (SUCCEEDED(ADsEnumerateNext(pEnum, 1, &var, &lFetch)) &&
lFetch==1) {
hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pChild)
if(SUCCEEDED(hr)) {
BSTR bstrName;
pChild->get_Name(&bstrName);
printf(" %S\n", bstrName);
SysFreeString(bstrName);
pChild->Release();
}
VariantClear(&var);
}
Cleanup:
if(pADs)
pADs->Release();
if(pCont)
pCont->Release();
if(pChild)
pChild->Release();
VariantClear(&var);
要件
要件 | Value |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
ヘッダー |
|
[DLL] |
|
IID |
IID_IADsContainerは 001677D0-FD16-11CE-ABC4-02608C9E7553 として定義されます |