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

El método IADs::GetEx recupera, de la memoria caché de propiedades, los valores de propiedad de un atributo determinado. Los valores de propiedad devueltos pueden tener un solo valor o varios valores. A diferencia del método IADs::Get , los valores de propiedad se devuelven como una matriz variant de VARIANT o una matriz variant de bytes para datos binarios. A continuación, una propiedad con un solo valor se representa como una matriz de un solo elemento.

Sintaxis

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

Parámetros

[in] bstrName

Contiene un BSTR que especifica el nombre de la propiedad.

[out] pvProp

Puntero a un valor VARIANT que recibe el valor o los valores de la propiedad .

Valor devuelto

Este método admite los valores devueltos estándar, así como los valores devueltos enumerados en la lista siguiente.

Para obtener más información, consulta Códigos de error adsi.

Comentarios

Los métodos IADs::Get e IADs::GetEx devuelven una estructura de variante diferente para un valor de propiedad con un solo valor. Si la propiedad es una cadena, IADs::Get devuelve una variante de cadena (VT_BSTR), mientras que IADs::GetEx devuelve una matriz variant de una cadena de tipo VARIANT con un solo elemento. Por lo tanto, si no está seguro de que un atributo multivalor devolverá un valor único o varios valores, use IADs::GetEx. Como no requiere que valide las estructuras de datos del resultado, es posible que desee usar IADs::GetEx para recuperar una propiedad cuando no esté seguro de si tiene uno o varios valores. En la lista siguiente se comparan los dos métodos.

IADs::Get version IADs::GetEx version
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
 

Al igual que el método IADs::Get , IADs::GetEx llama implícitamente a IADs::GetInfo en una caché de propiedades no inicializada. Para obtener más información sobre las llamadas implícitas y explícitas a IADs::GetInfo, vea IADs::GetInfo.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar IADs::GetEx para recuperar las propiedades del 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

En el ejemplo de código siguiente se muestra cómo recuperar valores de las propiedades opcionales de un objeto mediante el 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>

En el ejemplo de código siguiente se recuperan los valores de propiedad "homePhone" mediante 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 compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado iads.h
Archivo DLL Activeds.dll

Consulte también

Iads

IADs::Get

IADs::GetInfo

IADs::P ut

IADs::P utEx

Interfaces de caché de propiedades