Freigeben über


IADs::GetEx-Methode (iads.h)

Die IADs::GetEx-Methode ruft aus dem Eigenschaftencache Eigenschaftswerte eines bestimmten Attributs ab. Die zurückgegebenen Eigenschaftswerte können ein- oder mehrwertig sein. Im Gegensatz zur IADs::Get-Methode werden die Eigenschaftswerte als Variant-Array von VARIANT oder als Variant-Array von Bytes für Binärdaten zurückgegeben. Eine einwertige Eigenschaft wird dann als Array eines einzelnen Elements dargestellt.

Syntax

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

Parameter

[in] bstrName

Enthält einen BSTR , der den Eigenschaftennamen angibt.

[out] pvProp

Zeiger auf einen VARIANT-Wert , der den Wert oder die Werte der Eigenschaft empfängt.

Rückgabewert

Diese Methode unterstützt die Standardrückgabewerte sowie die Rückgabewerte, die in der folgenden Liste aufgeführt sind.

Weitere Informationen finden Sie unter ADSI-Fehlercodes.

Hinweise

Die Methoden IADs::Get und IADs::GetEx geben eine andere Variantenstruktur für einen einwertigen Eigenschaftswert zurück. Wenn es sich bei der Eigenschaft um eine Zeichenfolge handelt, gibt IADs::Get eine Variante der Zeichenfolge (VT_BSTR) zurück, während IADs::GetEx ein Variantenarray einer VARIANT-Typzeichenfolge mit einem einzelnen Element zurückgibt. Wenn Sie also nicht sicher sind, ob ein mehrwertiges Attribut einen einzelnen Wert oder mehrere Werte zurückgibt, verwenden Sie IADs::GetEx. Da Sie die Datenstrukturen des Ergebnisses nicht überprüfen müssen, sollten Sie IADs::GetEx verwenden, um eine Eigenschaft abzurufen, wenn Sie nicht sicher sind, ob sie über einzelne oder mehrere Werte verfügt. In der folgenden Liste werden die beiden Methoden verglichen.

IADs::Version abrufen 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
 

Wie die IADs::Get-Methode ruft IADs::GetEx implizit IADs::GetInfo für einen nicht initialisierten Eigenschaftencache auf. Weitere Informationen zu impliziten und expliziten Aufrufen von IADs::GetInfo finden Sie unter IADs::GetInfo.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie IADs::GetEx zum Abrufen von Objekteigenschaften verwenden.

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

Das folgende Codebeispiel zeigt, wie Werte der optionalen Eigenschaften eines Objekts mithilfe der IADs::Get-Methode abgerufen werden.

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

Im folgenden Codebeispiel werden die Eigenschaftswerte "homePhone" mithilfe von IADs::GetEx abgerufen.

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();
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile iads.h
DLL Activeds.dll

Weitere Informationen

Iads

IADs::Get

IADs::GetInfo

IADs::P ut

IADs::P utEx

Eigenschaftencacheschnittstellen