Condividi tramite


Funzione ADsBuildEnumerator (adshlp.h)

La funzione ADsBuildEnumerator crea un oggetto enumeratore per l'oggetto contenitore ADSI specificato.

Sintassi

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

Parametri

[in] pADsContainer

Tipo: IADsContainer*

Puntatore all'interfaccia IADsContainer per l'oggetto da enumerare.

[out] ppEnumVariant

Tipo: IEnumVARIANT**

Puntatore a un puntatore dell'interfaccia IEnumVARIANT che riceve l'oggetto enumeratore creato per l'oggetto contenitore specificato.

Valore restituito

Tipo: HRESULT

Questo metodo supporta i valori restituiti HRESULT standard, inclusi S_OK per un'operazione riuscita. Per altre informazioni sugli altri valori restituiti, vedere Codici di errore ADSI.

Commenti

La funzione helper di ADsBuildEnumerator esegue il wrapping delle chiamate usate per recuperare l'interfaccia IEnumVARIANT nell'oggetto enumeratore.

Per enumerare gli oggetti disponibili in un contenitore

  1. Chiamare la funzione ADsBuildEnumerator per creare un oggetto IEnumVARIANT che enumererà il contenuto del contenitore.
  2. Chiamare la funzione ADsEnumerateNext quante volte necessario per recuperare gli elementi dall'oggetto enumeratore.
  3. Chiamare la funzione ADSFreeEnumerator per rilasciare l'oggetto enumeratore quando non è più necessario.
Se il server supporta ricerche in pagina e il client ha specificato una dimensione di pagina che supera i risultati massimi di ricerca consentiti dal server, la funzione ADsBuildEnumerator inoltra errori e risultati dal server all'utente.

Esempio

Nell'esempio di codice seguente viene illustrato come è possibile usare le funzioni ADsBuildEnumerator, ADsEnumerateNext e ADSFreeEnumerator per enumerare il contenuto di un contenitore.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione adshlp.h
Libreria Activeds.lib
DLL Activeds.dll

Vedi anche

Codici di errore ADSI

Funzioni ADSI

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT