Método IADs::GetEx (iads.h)

O método IADs::GetEx recupera, do cache de propriedades, valores de propriedade de um determinado atributo. Os valores de propriedade retornados podem ser de valor único ou de vários valores. Ao contrário do método IADs::Get , os valores de propriedade são retornados como uma matriz variante de VARIANT ou uma matriz variante de bytes para dados binários. Uma propriedade de valor único é representada como uma matriz de um único elemento.

Sintaxe

HRESULT GetEx(
  [in]  BSTR    bstrName,
  [out] VARIANT *pvProp
);

Parâmetros

[in] bstrName

Contém um BSTR que especifica o nome da propriedade.

[out] pvProp

Ponteiro para uma VARIANT que recebe o valor ou valores da propriedade .

Valor retornado

Esse método dá suporte aos valores retornados padrão, bem como aos valores retornados listados na lista a seguir.

Para obter mais informações, consulte Códigos de erro ADSI.

Comentários

Os métodos IADs::Get e IADs::GetEx retornam uma estrutura variante diferente para um valor de propriedade de valor único. Se a propriedade for uma cadeia de caracteres, IADs::Get retornará uma variante de cadeia de caracteres (VT_BSTR), enquanto IADs::GetEx retornará uma matriz variante de uma cadeia de caracteres de tipo VARIANT com um único elemento. Portanto, se você não tiver certeza de que um atributo de vários valores retornará um único valor ou vários valores, use IADs::GetEx. Como ele não exige que você valide as estruturas de dados do resultado, talvez você queira usar IADs::GetEx para recuperar uma propriedade quando não tiver certeza se ela tem valores únicos ou múltiplos. A lista a seguir compara os dois métodos.

IADs::Obter versão Versão IADs::GetEx
Dim x as IADs

otherNumbers = x.Get("otherHomePhone")
If VarType(otherNumbers) = vbString Then
  Debug.Print otherNumbers
Else
  For Each homeNum In otherNumbers
    Debug.Print homeNum
  Next
End If
Dim x as IADs

otherNumbers = x.GetEx("otherHomePhone")
For Each homeNum In otherNumbers
  Debug.Print homeNum
Next
 

Como o método IADs::Get , IADs::GetEx chama implicitamente IADs::GetInfo em um cache de propriedade não inicializado. Para obter mais informações sobre chamadas implícitas e explícitas para IADs::GetInfo, consulte IADs::GetInfo.

Exemplos

O exemplo de código a seguir mostra como usar IADs::GetEx para recuperar propriedades de objeto.

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

O exemplo de código a seguir mostra como recuperar valores das propriedades opcionais de um objeto usando o método 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>

O exemplo de código a seguir recupera os valores de propriedade "homePhone" usando 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();
}

Requisitos

   
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h
DLL Activeds.dll

Confira também

Iads

IADs::Get

IADs::GetInfo

IADs::P ut

IADs::P utEx

Interfaces de cache de propriedade