IADs::GetEx 方法 (iads.h)
IADs::GetEx方法會從屬性快取中擷取給定屬性的屬性值。 傳回的屬性值可以是單一值或多重值。 不同于 IADs::Get 方法,屬性值會傳回為 VARIANT的 variant 陣列,或二進位資料的位元組變異陣列。 接著,單一值屬性會表示為單一專案的陣列。
語法
HRESULT GetEx(
[in] BSTR bstrName,
[out] VARIANT *pvProp
);
參數
[in] bstrName
包含指定屬性名稱的 BSTR 。
[out] pvProp
VARIANT 的指標,該 VARIANT 會接收 屬性的值或值。
傳回值
這個方法支援標準傳回值,以及下列清單中所列的傳回值。
如需詳細資訊,請參閱 ADSI 錯誤碼。
備註
IADs::Get和IADs::GetEx方法會針對單一值屬性值傳回不同的變體結構。 如果屬性是字串, IADs::Get 會傳回字串 (VT_BSTR) 的變體,而 IADs::GetEx 則會傳回具有單一元素之 VARIANT 類型字串的 variant 陣列。 因此,如果您不確定多重值屬性會傳回單一值或多個值,請使用 IADs::GetEx。 因為您不需要驗證結果的資料結構,所以當您不確定屬性是否有單一或多個值時,您可能想要使用 IADs::GetEx 來擷取屬性。 下列清單會比較這兩種方法。
IADs::Get 版本 | 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 |