Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Метод 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 |