IADsContainer 属性方法
IADsContainer 接口的属性方法获取或设置下表中所述的属性。 有关详细信息,以及有关属性方法的一般讨论,请参阅 Interface Property 方法。
属性
-
计数
-
-
访问类型:只读
-
脚本数据类型: LONG
-
// C++ method syntax HRESULT get_Count( [out] LONG* plCount );
检索容器中的项数。 设置筛选器时,Count 仅返回筛选的项目数。
-
-
Filter
-
-
访问类型:读/写
-
脚本数据类型: 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 接口。 因此, Microsoft LDAP 提供程序不支持get_Count 属性。
示例
以下 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);
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
标头 |
|
DLL |
|
IID |
IID_IADsContainer定义为 001677D0-FD16-11CE-ABC4-02608C9E7553 |