IADs::GetEx-Methode (iads.h)

Die IADs::GetEx-Methode ruft aus dem Eigenschaftscache eigenschaftenwerte eines bestimmten Attributs ab. Die zurückgegebenen Eigenschaftswerte können einwertig oder multiwertig sein. Im Gegensatz zur IADs::Get-Methode werden die Eigenschaftswerte als Variant-Array von VARIANT oder ein Variant-Array von Bytes für binäre Daten zurückgegeben. Eine einzelwertige 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 eine VARIANT , die 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 IADs::Get and IADs::GetEx-Methoden geben eine andere Variantenstruktur für einen wertigen Eigenschaftswert zurück. Wenn die Eigenschaft eine Zeichenfolge ist, gibt IADs::Get eine Variante der Zeichenfolge (VT_BSTR) zurück, während IADs::GetEx ein Variant-Array einer VARIANT-Typzeichenfolge mit einem einzelnen Element zurückgibt. Wenn Sie also nicht sicher sind, dass 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, möchten Sie möglicherweise IADs::GetEx verwenden, um eine Eigenschaft abzurufen, wenn Sie nicht sicher sind, ob es einzelne oder mehrere Werte hat. 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 gegen einen nicht initialisierten Eigenschaftscache auf. Weitere Informationen zu impliziten und expliziten Aufrufen von IADs finden Sie unter IADs::GetInfo.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie IADs verwendet werden::GetEx zum Abrufen von Objekteigenschaften.

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

Im folgenden Codebeispiel wird gezeigt, 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 Werte der "homePhone"-Eigenschaft 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