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

La méthode IADs::GetEx récupère, à partir du cache de propriétés, les valeurs de propriété d’un attribut donné. Les valeurs de propriété retournées peuvent être à valeur unique ou à valeurs multiples. Contrairement à la méthode IADs::Get , les valeurs de propriété sont retournées sous la forme d’un tableau variant de VARIANT ou d’un tableau de variantes d’octets pour les données binaires. Une propriété à valeur unique est ensuite représentée sous la forme d’un tableau d’un élément unique.

Syntaxe

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

Paramètres

[in] bstrName

Contient un BSTR qui spécifie le nom de la propriété.

[out] pvProp

Pointeur vers un VARIANT qui reçoit la valeur, ou les valeurs, de la propriété .

Valeur retournée

Cette méthode prend en charge les valeurs de retour standard ainsi que les valeurs de retour répertoriées dans la liste suivante.

Pour plus d’informations, consultez Codes d’erreur ADSI.

Notes

Les méthodes IADs::Get et IADs::GetEx retournent une structure de variante différente pour une valeur de propriété à valeur unique. Si la propriété est une chaîne, IADs::Get renvoie une variante de chaîne (VT_BSTR), tandis que IADs::GetEx renvoie un tableau de variantes d’une chaîne de type VARIANT avec un seul élément. Par conséquent, si vous n’êtes pas sûr qu’un attribut à valeurs multiples retourne une ou plusieurs valeurs, utilisez IADs::GetEx. Comme il n’est pas nécessaire de valider les structures de données du résultat, vous pouvez utiliser IADs::GetEx pour récupérer une propriété lorsque vous ne savez pas si elle a des valeurs uniques ou multiples. La liste suivante compare les deux méthodes.

IADs::Obtenir la 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
 

Comme la méthode IADs::Get , IADs::GetEx appelle implicitement IADs::GetInfo sur un cache de propriétés non initialisé. Pour plus d’informations sur les appels implicites et explicites à IADs::GetInfo, consultez IADs::GetInfo.

Exemples

L’exemple de code suivant montre comment utiliser IADs::GetEx pour récupérer des propriétés d’objet.

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

L’exemple de code suivant montre comment récupérer des valeurs des propriétés facultatives d’un objet à l’aide de la méthode 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>

L’exemple de code suivant récupère les valeurs de propriété « homePhone » à l’aide d’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();
}

Configuration requise

   
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête iads.h
DLL Activeds.dll

Voir aussi

IADs

IADs::Get

IADs::GetInfo

IADs::P ut

IADs::P utEx

Interfaces du cache de propriétés