Freigeben über


ADsBuildEnumerator-Funktion (adshlp.h)

Die ADsBuildEnumerator-Funktion erstellt ein Enumeratorobjekt für das angegebene ADSI-Containerobjekt.

Syntax

HRESULT ADsBuildEnumerator(
  [in]  IADsContainer *pADsContainer,
  [out] IEnumVARIANT  **ppEnumVariant
);

Parameter

[in] pADsContainer

Typ: IADsContainer*

Zeiger auf die IADsContainer-Schnittstelle für das zu enumerierende Objekt.

[out] ppEnumVariant

Typ: IEnumVARIANT**

Zeiger auf einen IEnumVARIANT-Schnittstellenzeiger , der das für das angegebene Containerobjekt erstellte Enumeratorobjekt empfängt.

Rückgabewert

Typ: HRESULT

Diese Methode unterstützt die standardmäßigen HRESULT-Rückgabewerte , einschließlich S_OK für einen erfolgreichen Vorgang. Weitere Informationen zu anderen Rückgabewerten finden Sie unter ADSI-Fehlercodes.

Hinweise

Die Hilfsfunktion ADsBuildEnumerator umschließt die Aufrufe, die zum Abrufen der IEnumVARIANT-Schnittstelle für das Enumeratorobjekt verwendet werden.

So listen Sie die verfügbaren Objekte in einem Container auf

  1. Rufen Sie die ADsBuildEnumerator-Funktion auf, um ein IEnumVARIANT-Objekt zu erstellen, das den Inhalt des Containers aufzählt.
  2. Rufen Sie die ADsEnumerateNext-Funktion so oft wie nötig auf, um die Elemente aus dem Enumeratorobjekt abzurufen.
  3. Rufen Sie die ADSFreeEnumerator-Funktion auf, um das Enumeratorobjekt freizugeben, wenn es nicht mehr benötigt wird.
Wenn der Server ausgelagerte Suchvorgänge unterstützt und der Client eine Seitengröße angegeben hat, die die vom Server maximal zulässigen Suchergebnisse überschreitet, leitet die ADsBuildEnumerator-Funktion Fehler und Ergebnisse vom Server an den Benutzer weiter.

Beispiele

Das folgende Codebeispiel zeigt, wie die Funktionen ADsBuildEnumerator, ADsEnumerateNext und ADSFreeEnumerator verwendet werden können, um den Inhalt eines Containers aufzulisten.

HRESULT PrintAllObjects(IADsContainer* pContainer)
{
    HRESULT hr;
     
    if(NULL == pContainer) 
    {
        return E_INVALIDARG;
    }
     
    IEnumVARIANT *pEnum = NULL;

    // Create an enumerator object in the container.
    hr = ADsBuildEnumerator(pContainer, &pEnum);
    if(SUCCEEDED(hr))
    {
        VARIANT var;
        ULONG ulFetched = 0L;

        // Get the next contained object.
        while(S_OK == (hr = ADsEnumerateNext(pEnum, 1, &var, &ulFetched)) && (ulFetched > 0))
        {
            IADs *pADs;

            // Print the object
            hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pADs);
            if(SUCCEEDED(hr))
            {
                CComBSTR sbstr;
                IADsContainer *pChildContainer;

                hr = pADs->get_Name(&sbstr);
                if(SUCCEEDED(hr))
                {
                    wprintf(sbstr);
                    wprintf(L"\n");
                }

                hr = pADs->QueryInterface(IID_IADsContainer, (void**)&pChildContainer);
                if(SUCCEEDED(hr))
                {
                    // If the retrieved object is a container, recursively print its contents as well.
                    PrintAllObjects(pChildContainer);
                }
                
                pADs->Release();
            }
            
            // Release the VARIANT.
            VariantClear(&var);
        }
        
        ADsFreeEnumerator(pEnum);
    }

    return hr;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile adshlp.h
Bibliothek Activeds.lib
DLL Activeds.dll

Weitere Informationen

ADSI-Fehlercodes

ADSI-Funktionen

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT