다음을 통해 공유


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