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
- Appelez la fonction ADsBuildEnumerator pour créer un objet IEnumVARIANT qui énumérera le contenu du conteneur.
- Appelez la fonction ADsEnumerateNext autant de fois que nécessaire pour récupérer les éléments de l’objet énumérateur.
- Appelez la fonction ADSFreeEnumerator pour libérer l’objet énumérateur lorsqu’il n’est plus nécessaire.
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 |