Partager via


Fonction ADsBuildEnumerator (adshlp.h)

La fonction ADsBuildEnumerator crée un objet énumérateur pour l’objet conteneur ADSI spécifié.

Syntaxe

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

Paramètres

[in] pADsContainer

Type : IADsContainer*

Pointeur vers l’interface IADsContainer pour l’objet à énumérer.

[out] ppEnumVariant

Type : IEnumVARIANT**

Pointeur vers un pointeur d’interface IEnumVARIANT qui reçoit l’objet énumérateur créé pour l’objet conteneur spécifié.

Valeur retournée

Type : HRESULT

Cette méthode prend en charge les valeurs de retour HRESULT standard, y compris S_OK pour une opération réussie. Pour plus d’informations sur les autres valeurs de retour, consultez Codes d’erreur ADSI.

Remarques

La fonction d’assistance ADsBuildEnumerator encapsule les appels utilisés pour récupérer l’interface IEnumVARIANT sur l’objet énumérateur.

Pour énumérer les objets disponibles dans un conteneur

  1. Appelez la fonction ADsBuildEnumerator pour créer un objet IEnumVARIANT qui énumérera le contenu du conteneur.
  2. Appelez la fonction ADsEnumerateNext autant de fois que nécessaire pour récupérer les éléments de l’objet énumérateur.
  3. Appelez la fonction ADSFreeEnumerator pour libérer l’objet énumérateur lorsqu’il n’est plus nécessaire.
Si le serveur prend en charge les recherches paginées et que le client a spécifié une taille de page qui dépasse le nombre maximal de résultats de recherche autorisés par le serveur, la fonction ADsBuildEnumerator transfère les erreurs et les résultats du serveur à l’utilisateur.

Exemples

L’exemple de code suivant montre comment les fonctions ADsBuildEnumerator, ADsEnumerateNext et ADSFreeEnumerator peuvent être utilisées pour énumérer le contenu d’un conteneur.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête adshlp.h
Bibliothèque Activeds.lib
DLL Activeds.dll

Voir aussi

Codes d’erreur ADSI

Fonctions ADSI

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT