Compartir a través de


Método IADsCollection::get__NewEnum (iads.h)

El método IADsCollection::get__NewEnum obtiene un objeto enumerador dependiente que implementa IEnumVARIANT para este objeto de colección ADSI. Tenga en cuenta que hay dos caracteres de subrayado en el nombre de función (get__NewEnum).

Sintaxis

HRESULT get__NewEnum(
  [out] IUnknown **ppEnumerator
);

Parámetros

[out] ppEnumerator

Puntero a un puntero a la interfaz IUnknown del objeto enumerador de esta colección.

Valor devuelto

Este método admite los valores devueltos estándar, incluidos S_OK, E_FAIL o E_NOTIMPL. Para obtener más información y otros valores devueltos, vea Códigos de error adsi.

Comentarios

Cuando un servidor admite la búsqueda paginada y el cliente ha especificado el límite de páginas mayor que el máximo de resultados de búsqueda permitidos en el servidor, el método IADsCollection::get__NewEnum devuelve errores de las siguientes maneras:

  • Si el servidor devuelve un error sin resultados, la función solo devuelve el error.
  • Si el servidor devuelve resultados parciales con o sin un error, por ejemplo, los resultados de búsqueda máximo permitidos en el servidor, la función devuelve los resultados parciales del servidor al usuario.
  • Si el servidor devuelve todos los resultados con o sin un error, por ejemplo, resultados máximos de búsqueda en cada página y todos los resultados a través de varias páginas, la función devuelve todos los resultados del servidor al usuario.

Ejemplos

El para cada... En... La siguiente instrucción del siguiente ejemplo de código de Visual Basic invoca implícitamente get__NewEnum método.

Dim fso As IADsFileServiceOperations 
On Error GoTo Cleanup

Set fso = GetObject("WinNT://myComputer/Fabrikam01") 
 
Dim coll As IADsCollection
Set coll = fso.Sessions
 
' The following statement invokes IADsCollection::get__NewEnum.
For Each session In coll 
   MsgBox "Session name: " & session.Name
Next session

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred... " & Err.Number)
    End If
    Set fso = Nothing

En el ejemplo de código de C++ siguiente se muestra cómo se usa IADsCollection::get__NewEnum para enumerar las sesiones de servicio de archivos activas.

HRESULT EnumCollection(IADsCollection *);

HRESULT GetACollectionOfSessions()
{
    LPWSTR adspath = L"WinNT://myComputer/LanmanServer";
    HRESULT hr = S_OK;
    IADsCollection *pColl = NULL;

    // Bind to file service operations.
    IADsFileServiceOperations *pFso = NULL;
    hr = ADsGetObject(adspath,
                      IID_IADsFileServiceOperations,
                      (void**)&pFso);
    if(FAILED(hr)) {goto Cleanup;}

    // Get the pointer to the collection.
    hr = pFso->Sessions(&pColl);
    if(FAILED(hr)) {goto Cleanup;}

    hr = EnumCollection(pColl);

Cleanup:
    if(pColl) pColl->Release();
    if(pFso) pFso->Release();

    return hr;
}

HRESULT EnumCollection(IADsCollection *pColl)
{
    IUnknown *pUnk=NULL;
    HRESULT hr = S_OK;
    // Get the Enumerator object on the collection object.
    hr = pColl->get__NewEnum(&pUnk);
    if(FAILED(hr)) {goto Cleanup;}

    IEnumVARIANT *pEnum;
    hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
    if(FAILED(hr)) {goto Cleanup;}

    // Enumerate the collection.
    BSTR bstr = NULL;
    VARIANT var;
    IADs *pADs = NULL;
    ULONG lFetch;
    IDispatch *pDisp = NULL;

    VariantInit(&var);
    hr = pEnum->Next(1, &var, &lFetch);
    while(hr == S_OK)
    {
        if (lFetch == 1)    
        {
             pDisp = V_DISPATCH(&var);
             pDisp->QueryInterface(IID_IADs, (void**)&pADs);
             pADs->get_Name(&bstr);
             printf("Session name: %S\n",bstr);
             SysFreeString(bstr);
             pADs->Release();
        }
        VariantClear(&var);
        pDisp->Release();
        pDisp = NULL;
        hr = pEnum->Next(1, &var, &lFetch);
    };
    

Cleanup:
    if(pDisp) pDisp->Release();
    if(pUnk) pUnk->Release();
    if(pColl) pColl->Release();
    if(pEnum) pEnum->Release();
    return hr;
}

Requisitos

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

Consulte también

Códigos de error adsi

IADsCollection

IEnumVARIANT

IUnknown