Compartir a través de


Función ADsBuildEnumerator (adshlp.h)

La función ADsBuildEnumerator crea un objeto enumerador para el objeto contenedor ADSI especificado.

Sintaxis

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

Parámetros

[in] pADsContainer

Tipo: IADsContainer*

Puntero a la interfaz IADsContainer del objeto que se va a enumerar.

[out] ppEnumVariant

Tipo: IEnumVARIANT**

Puntero a un puntero de interfaz IEnumVARIANT que recibe el objeto enumerador creado para el objeto contenedor especificado.

Valor devuelto

Tipo: HRESULT

Este método admite los valores devueltos HRESULT estándar, incluidos S_OK para una operación correcta. Para obtener más información sobre otros valores devueltos, vea Códigos de error adsi.

Comentarios

La función auxiliar ADsBuildEnumerator ajusta las llamadas usadas para recuperar la interfaz IEnumVARIANT en el objeto enumerador.

Para enumerar los objetos disponibles en un contenedor

  1. Llame a la función ADsBuildEnumerator para crear un objeto IEnumVARIANT que enumerará el contenido del contenedor.
  2. Llame a la función ADsEnumerateNext tantas veces como sea necesario para recuperar los elementos del objeto enumerador.
  3. Llame a la función ADSFreeEnumerator para liberar el objeto enumerador cuando ya no sea necesario.
Si el servidor admite búsquedas paginadas y el cliente ha especificado un tamaño de página que supera el máximo de resultados de búsqueda permitidos por el servidor, la función ADsBuildEnumerator reenviará errores y resultados del servidor al usuario.

Ejemplos

En el ejemplo de código siguiente se muestra cómo se pueden usar las funciones ADsBuildEnumerator, ADsEnumerateNext y ADSFreeEnumerator para enumerar el contenido de un contenedor.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado adshlp.h
Library Activeds.lib
Archivo DLL Activeds.dll

Consulte también

Códigos de error adsi

Funciones ADSI

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT