Поделиться через


Метод 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 содержит указатель интерфейса IDispatch объекта, который реализует интерфейс IADsPropertyEntry для полученного атрибута.

Любая память, выделенная для этого параметра, должна быть освобождена с помощью функции VariantClear , если данные больше не требуются.

Возвращаемое значение

Этот метод поддерживает стандартные возвращаемые значения HRESULT , включая S_OK. Если запрошенный элемент свойства не найден, метод возвращает 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 ВРЕМЯ UTC
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 был правильно извлечен. Дополнительные сведения о загрузке кэша свойств см. в примере функции GetPropertyCache в IADsPropertyList.

#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
Header iads.h
DLL Activeds.dll

См. также раздел

Коды ошибок ADSI

ADSTYPEENUM

IADsPropertyList

Методы свойств IADsPropertyList

IDispatch

VariantClear