IADs::GetEx 方法 (iads.h)
IADs::GetEx 方法从属性缓存中检索给定特性的属性值。 返回的属性值可以是单值或多值。 与 IADs::Get 方法不同,属性值作为 VARIANT 的变体数组或二进制数据的字节变体数组返回。 然后,将单值属性表示为单个元素的数组。
语法
HRESULT GetEx(
[in] BSTR bstrName,
[out] VARIANT *pvProp
);
parameters
[in] bstrName
包含指定属性名称的 BSTR 。
[out] pvProp
指向接收 属性的值的 VARIANT 的指针。
返回值
此方法支持标准返回值以及以下列表中列出的返回值。
有关详细信息,请参阅 ADSI 错误代码。
注解
IADs::Get 和 IADs::GetEx 方法为单值属性值返回不同的变体结构。 如果 属性是字符串, 则 IADs::Get 返回字符串 (VT_BSTR) 的变体,而 IADs::GetEx 返回具有单个元素的 VARIANT 类型字符串的变体数组。 因此,如果不确定多值属性将返回单个值或多个值,请使用 IADs::GetEx。 由于它不需要验证结果的数据结构,因此在不确定属性是具有单一值还是多个值时,可能需要使用 IADs::GetEx 检索属性。 以下列表比较了这两种方法。
IADs::Get version | IADs::GetEx 版本 |
---|---|
|
|
与 IADs::Get 方法一样, IADs::GetEx 针对未初始化的属性缓存隐式调用 IADs::GetInfo 。 有关对 IADs::GetInfo 的隐式和显式调用的详细信息,请参阅 IADs::GetInfo。
示例
下面的代码示例演示如何使用 IADs::GetEx 检索对象属性。
Dim x As IADs
On Error GoTo ErrTest:
Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
' Single value property.
Debug.Print "Home Phone Number is: "
phoneNumber = x.GetEx(""homePhone")
For Each homeNum in phoneNumber
Debug.Print homeNum
Next
' Multiple value property.
Debug.Print "Other Phone Numbers are: "
otherNumbers = x.GetEx("otherHomePhone")
For Each homeNum In otherNumbers
Debug.Print homeNum
Next
Exit Sub
ErrTest:
Debug.Print Hex(Err.Number)
Set x = Nothing
下面的代码示例演示如何使用 IADs::Get 方法检索对象的可选属性的值。
<HTML>
<head><title></title></head>
<body>
<%
Dim x
On Error Resume Next
Set x = GetObject("WinNT://Fabrikam/Administrator")
Response.Write "Object Name: " & x.Name & "<br>"
Response.Write "Object Class: " & x.Class & "<br>"
' Get the optional property values for this object.
Set cls = GetObject(x.Schema)
For Each op In cls.OptionalProperties
vals = obj.GetEx(op)
if err.Number = 0 then
Response.Write "Optional Property: & op & "="
for each v in vals
Response.Write v & " "
next
Response.Write "<br>"
end if
Next
%>
</body>
</html>
下面的代码示例使用 IADs::GetEx 检索“homePhone”属性值。
IADs *pADs = NULL;
hr = ADsGetObject(L"LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=Com", IID_IADs, (void**) &pADs );
if ( !SUCCEEDED(hr) ) { return hr;}
hr = pADs->GetEx(CComBSTR("homePhone"), &var);
if ( SUCCEEDED(hr) )
{
LONG lstart, lend;
SAFEARRAY *sa = V_ARRAY( &var );
VARIANT varItem;
// Get the lower and upper bound.
hr = SafeArrayGetLBound( sa, 1, &lstart );
hr = SafeArrayGetUBound( sa, 1, &lend );
// Iterate and print the content.
VariantInit(&varItem);
printf("Getting Home Phone using IADs::Get.\n");
for ( long idx=lstart; idx <= lend; idx++ )
{
hr = SafeArrayGetElement( sa, &idx, &varItem );
printf("%S ", V_BSTR(&varItem));
VariantClear(&varItem);
}
printf("\n");
VariantClear(&var);
}
// Cleanup.
if ( pADs )
{
pADs->Release();
}
要求
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | iads.h |
DLL | Activeds.dll |