Метод IADs::GetEx (iads.h)
Метод IADs::GetEx извлекает из кэша свойств значения свойств заданного атрибута. Возвращаемые значения свойств могут быть однозначными или многозначными. В отличие от метода IADs::Get значения свойств возвращаются в виде массива вариантов VARIANT или в виде массива вариантов байтов для двоичных данных. Однозначное свойство затем представляется в виде массива одного элемента.
Синтаксис
HRESULT GetEx(
[in] BSTR bstrName,
[out] VARIANT *pvProp
);
Параметры
[in] bstrName
Содержит BSTR , указывающий имя свойства.
[out] pvProp
Указатель на variant , который получает значение или значения свойства .
Возвращаемое значение
Этот метод поддерживает стандартные возвращаемые значения, а также возвращаемые значения, перечисленные в следующем списке.
Дополнительные сведения см. в разделе Коды ошибок ADSI.
Комментарии
Методы IADs::Get и IADs::GetEx возвращают другую структуру вариантов для значения свойства с одним значением. Если свойство является строкой, IADs::Get возвращает вариант строки (VT_BSTR), а IADs::GetEx возвращает массив вариантов строки типа VARIANT с одним элементом. Таким образом, если вы не уверены, что атрибут с несколькими значениями вернет одно или несколько значений, используйте IADs::GetEx. Так как для этого не требуется проверять структуры данных результата, может потребоваться использовать IADs::GetEx для получения свойства, если вы не уверены, имеет ли оно одно или несколько значений. В следующем списке сравниваются два метода.
IADs::Get version | Версия IADs::GetEx |
---|---|
|
|
Как и метод IADs::Get , IADs::GetEx неявно вызывает IADs::GetInfo для неинициализированного кэша свойств. Дополнительные сведения о неявных и явных вызовах IADs::GetInfo см. в разделе IADs::GetInfo.
Примеры
В следующем примере кода показано, как использовать IADs::GetEx для получения свойств объекта.
Dim x As IADs
On Error GoTo ErrTest:
Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
' Single value property.
Debug.Print "Home Phone Number is: "
phoneNumber = x.GetEx(""homePhone")
For Each homeNum in phoneNumber
Debug.Print homeNum
Next
' Multiple value property.
Debug.Print "Other Phone Numbers are: "
otherNumbers = x.GetEx("otherHomePhone")
For Each homeNum In otherNumbers
Debug.Print homeNum
Next
Exit Sub
ErrTest:
Debug.Print Hex(Err.Number)
Set x = Nothing
В следующем примере кода показано, как получить значения необязательных свойств объекта с помощью метода IADs::Get .
<HTML>
<head><title></title></head>
<body>
<%
Dim x
On Error Resume Next
Set x = GetObject("WinNT://Fabrikam/Administrator")
Response.Write "Object Name: " & x.Name & "<br>"
Response.Write "Object Class: " & x.Class & "<br>"
' Get the optional property values for this object.
Set cls = GetObject(x.Schema)
For Each op In cls.OptionalProperties
vals = obj.GetEx(op)
if err.Number = 0 then
Response.Write "Optional Property: & op & "="
for each v in vals
Response.Write v & " "
next
Response.Write "<br>"
end if
Next
%>
</body>
</html>
В следующем примере кода извлекаются значения свойств homePhone с помощью IADs::GetEx.
IADs *pADs = NULL;
hr = ADsGetObject(L"LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=Com", IID_IADs, (void**) &pADs );
if ( !SUCCEEDED(hr) ) { return hr;}
hr = pADs->GetEx(CComBSTR("homePhone"), &var);
if ( SUCCEEDED(hr) )
{
LONG lstart, lend;
SAFEARRAY *sa = V_ARRAY( &var );
VARIANT varItem;
// Get the lower and upper bound.
hr = SafeArrayGetLBound( sa, 1, &lstart );
hr = SafeArrayGetUBound( sa, 1, &lend );
// Iterate and print the content.
VariantInit(&varItem);
printf("Getting Home Phone using IADs::Get.\n");
for ( long idx=lstart; idx <= lend; idx++ )
{
hr = SafeArrayGetElement( sa, &idx, &varItem );
printf("%S ", V_BSTR(&varItem));
VariantClear(&varItem);
}
printf("\n");
VariantClear(&var);
}
// Cleanup.
if ( pADs )
{
pADs->Release();
}
Требования
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | iads.h |
DLL | Activeds.dll |