Partager via


ADsBuildEnumerator, fonction (adshlp.h)

La fonction ADsBuildEnumerator crée un objet d’é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 de l’objet à énumérer.

[out] ppEnumVariant

Type : IEnumVARIANT**

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

Valeur de retour

Type : HRESULT

Cette méthode prend en charge les valeurs de retour HRESULT standard, y compris les 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 wrappe 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ère 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 les résultats de recherche maximum autorisés par le serveur, l'ADsBuildEnumerator fonction transfère les erreurs et les résultats du serveur à l’utilisateur.

Exemples

L’exemple de code suivant montre comment les ADsBuildEnumerator, ADsEnumerateNextet fonctions 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;
}

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
serveur minimum pris en charge Windows Server 2008
plateforme cible Windows
d’en-tête adshlp.h
bibliothèque Activeds.lib
DLL Activeds.dll

Voir aussi

codes d’erreur ADSI

fonctions ADSI

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT