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
- Llame a la función ADsBuildEnumerator para crear un objeto IEnumVARIANT que enumerará el contenido del contenedor.
- Llame a la función ADsEnumerateNext tantas veces como sea necesario para recuperar los elementos del objeto enumerador.
- Llame a la función ADSFreeEnumerator para liberar el objeto enumerador cuando ya no sea necesario.
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 |