IADsPropertyList::GetPropertyItem メソッド (iads.h)
IADsPropertyList::GetPropertyItem メソッドは、リストから名前と一致する項目を取得します。
構文
HRESULT GetPropertyItem(
[in] BSTR bstrName,
[in] LONG lnADsType,
[in, out] VARIANT *pVariant
);
パラメーター
[in] bstrName
要求されたプロパティの名前を格納します。
[in] lnADsType
要求されたプロパティの解釈に使用するデータ型を決定する ADSTYPEENUM 列挙値のいずれかを格納します。 型が不明な場合は、このパラメーターを ADSTYPE_UNKNOWN に設定できます。 スキーマレス サーバーの場合、ユーザーは型を指定する必要があります。
[in, out] pVariant
呼び出し元によって割り当てられた VARIANT 変数のアドレス。 返されると、VARIANT には、取得した属性の IADsPropertyEntry インターフェイスを実装するオブジェクトの IDispatch インターフェイス ポインターが含まれます。
データが不要になった場合は、このパラメーターに割り当てられたメモリを VariantClear 関数で解放する必要があります。
戻り値
このメソッドは、S_OKを含む標準 の HRESULT 戻り値 をサポートしています。 要求されたプロパティ項目が見つからない場合、メソッドは ADS_PROPERTY_NOT_FOUNDを返します。 詳細およびその他の戻り値については、「 ADSI エラー コード」を参照してください。
注釈
使用できるこのメソッドによって返される IADsPropertyValue オブジェクトの プロパティは、 lnADsType で指定された型によって異なります。 次の表は、データ型を適切な IADsPropertyEntry プロパティに マップします。
lnADsType 値 | 使用する IADsPropertyValue プロパティ |
---|---|
ADSTYPE_INVALID | 使用できません。 |
ADSTYPE_DN_STRING | DNString |
ADSTYPE_CASE_EXACT_STRING | CaseExactString |
ADSTYPE_CASE_IGNORE_STRING | CaseIgnoreString |
ADSTYPE_PRINTABLE_STRING | PrintableString |
ADSTYPE_NUMERIC_STRING | NumericString |
ADSTYPE_BOOLEAN | Boolean |
ADSTYPE_INTEGER | 整数 |
ADSTYPE_OCTET_STRING | OctetString |
ADSTYPE_UTC_TIME | UTCTime |
ADSTYPE_LARGE_INTEGER | LargeInteger |
ADSTYPE_PROV_SPECIFIC | IADsPropertyValue2::GetObjectProperty を使用する (VT_ARRAY |VT_UI1)。 |
ADSTYPE_OBJECT_CLASS | 使用できません。 |
ADSTYPE_CASEIGNORE_LIST | IADsPropertyValue2::GetObjectProperty (IADsCaseIgnoreList) を使用します。 |
ADSTYPE_OCTET_LIST | IADsPropertyValue2::GetObjectProperty (IADsOctetList) を使用します。 |
ADSTYPE_PATH | IADsPropertyValue2::GetObjectProperty (IADsPath) を使用します。 |
ADSTYPE_POSTALADDRESS | IADsPropertyValue2::GetObjectProperty (IADsPostalAddress) を使用します。 |
ADSTYPE_TIMESTAMP | IADsPropertyValue2::GetObjectProperty (IADsTimestamp) を使用します。 |
ADSTYPE_BACKLINK | IADsPropertyValue2::GetObjectProperty (IADsBackLink) を使用します。 |
ADSTYPE_TYPEDNAME | IADsPropertyValue2::GetObjectProperty (IADsTypedName) を使用します。 |
ADSTYPE_HOLD | IADsPropertyValue2::GetObjectProperty (IADsHold) を使用します。 |
ADSTYPE_NETADDRESS | IADsPropertyValue2::GetObjectProperty (IADsNetAddress) を使用します。 |
ADSTYPE_REPLICAPOINTER | IADsPropertyValue2::GetObjectProperty (IADsReplicaPointer) を使用します。 |
ADSTYPE_FAXNUMBER | IADsPropertyValue2::GetObjectProperty (IADsFaxNumber) を使用します。 |
ADSTYPE_EMAIL | IADsPropertyValue2::GetObjectProperty (IADsEmail) を使用します。 |
ADSTYPE_NT_SECURITY_DESCRIPTOR | SecurityDescriptor |
ADSTYPE_UNKNOWN | 使用できません。 |
ADSTYPE_DN_WITH_BINARY | IADsPropertyValue2::GetObjectProperty (IADsDNWithBinary) を使用します。 |
ADSTYPE_DN_WITH_STRING | IADsPropertyValue2::GetObjectProperty (IADsDNWithString) を使用します。 |
例
次のコード例は、 GetPropertyItem メソッドを使用してプロパティ エントリを取得する方法を示しています。
Const ADSTYPE_CASE_IGNORE_STRING = 3
Dim propList As IADsPropertyList
Dim propEntry As IADsPropertyEntry
Dim propVal As IADsPropertyValue
Set propList = GetObject("LDAP://dc01/DC=Fabrikam,DC=com")
propList.GetInfo
Set propEntry = propList.GetPropertyItem("dc", ADSTYPE_CASE_IGNORE_STRING)
For Each v In propEntry.Values
Set propVal = v
' Use the CaseIgnoreString property because the ADSTYPE_CASE_IGNORE_STRING
' type was requested in GetPropertyItem.
Debug.Print propVal.CaseIgnoreString
Next
Set propList = Nothing
Set propEntry = Nothing
Set propVal = Nothing
次のコード例は、 GetPropertyItem メソッドを使用してプロパティ エントリを取得する方法を示しています。 IADsPropertyList インターフェイスが適切に取得されていることを前提としています。 プロパティ キャッシュを読み込む方法の詳細については、IADsPropertyList の GetPropertyCache サンプル関数を参照してください。
#include <activeds.h>
#include <stdio.h>
/////////////////////////////////////////////////////////
// Function to retrieve a specified property entry
// using the IADsPropertyList::GetPropertyItem method.
/////////////////////////////////////////////////////////
IADsPropertyEntry *GetPropertyItem(
IADsPropertyList *pList,
BSTR entryName,
long entryType)
{
IADsPropertyEntry *pEntry;
VARIANT var;
VariantInit(&var);
if(!pList || !entryName)
{
_tprintf("Invalid argument...");
return NULL;
}
// Get a property entry.
hr = pList->GetPropertyItem(entryName, entryType, &var);
hr = V_DISPATCH(&var)->QueryInterface(IID_IADsPropertyEntry,
(void**)&pEntry);
VariantClear(&var);
return pEntry;
}
///////////////////////////////////////////////////////
// Examine a property entry.
///////////////////////////////////////////////////////
IADsPropertyList *pList = NULL;
IADsPropertyEntry *pEntry = NULL;
pList = GetPropertyCache(L"LDAP://dc01/DC=Fabrikam,DC=COM");
if(pList)
{
pEntry = GetPropertyItem(pList, L"dc", ADSTYPE_CASE_IGNORE_STRING);
}
if(pEntry)
{
BSTR nm;
HRESULT hr = pEntry->get_Name(&nm);
if(SUCCEEDED(hr))
{
printf("Property name = %S\n",nm);
SysFreeString(nm);
}
}
if(pList)
pList->Release();
if(pEntry)
pEntry->Release();
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | iads.h |
[DLL] | Activeds.dll |