IADs::GetEx メソッド (iads.h)
IADs::GetEx メソッドは、プロパティ キャッシュから特定の属性のプロパティ値を取得します。 返されるプロパティ値は、単一値または複数値にすることができます。 IADs::Get メソッドとは異なり、プロパティ値は VARIANT のバリアント配列、またはバイナリ データのバイト配列として返されます。 その後、単一値のプロパティは、1 つの要素の配列として表されます。
構文
HRESULT GetEx(
[in] BSTR bstrName,
[out] VARIANT *pvProp
);
パラメーター
[in] bstrName
プロパティ名を指定する BSTR が含まれます。
[out] pvProp
プロパティの値 (値) を受け取る VARIANT へのポインター。
戻り値
このメソッドは、標準の戻り値と、次の一覧に示す戻り値をサポートします。
詳細については、「 ADSI エラー コード」を参照してください。
解説
IADs::Get メソッドと IADs::GetEx メソッドは、単一値のプロパティ値に対して異なるバリアント構造を返します。 プロパティが文字列の場合、 IADs::Get は 文字列のバリアント (VT_BSTR) を返しますが、 IADs::GetEx は単一の要素を持つ VARIANT 型文字列のバリアント配列を返します。 したがって、複数値属性が 1 つの値または複数の値を返すかわからない場合は、 IADs::GetEx を使用します。 結果のデータ構造を検証する必要がないため、 IADs::GetEx を使用してプロパティが 1 つまたは複数の値を持っているかわからない場合は、プロパティを取得できます。 次の一覧では、2 つのメソッドを比較します。
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 |