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 |
---|---|
|
|
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 |