次の方法で共有


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 インターフェイスが適切に取得されていることを前提としています。 プロパティ キャッシュを読み込む方法の詳細については、IADsPropertyListGetPropertyCache サンプル関数を参照してください。

#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

こちらもご覧ください

ADSI エラー コード

ADSTYPEENUM

IADsPropertyList

IADsPropertyList プロパティ メソッド

IDispatch

VariantClear