Compartilhar via


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

O método IADsCollection::get__NewEnum obtém um objeto enumerador dependente que implementa IEnumVARIANT para este objeto de coleção ADSI. Lembre-se de que há dois caracteres de sublinhado no nome da função (get__NewEnum).

Sintaxe

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

Parâmetros

[out] ppEnumerator

Ponteiro para um ponteiro para a interface IUnknown no objeto enumerador dessa coleção.

Retornar valor

Esse método dá suporte aos valores de retorno padrão, incluindo S_OK, E_FAIL ou E_NOTIMPL. Para obter mais informações e outros valores retornados, consulte Códigos de erro ADSI.

Comentários

Quando um servidor dá suporte à pesquisa paginada e o cliente especifica o limite de página maior que o máximo de resultados de pesquisa permitidos no servidor, o método IADsCollection::get__NewEnum retorna erros das seguintes maneiras:

  • Se o servidor retornar um erro sem resultados, a função retornará apenas o erro.
  • Se o servidor retornar resultados parciais com ou sem um erro, por exemplo, os resultados máximos de pesquisa permitidos no servidor, a função retornará os resultados parciais do servidor para o usuário.
  • Se o servidor retornar todos os resultados com ou sem um erro, por exemplo, o máximo de resultados de pesquisa em cada página e todos os resultados por meio de várias páginas, a função retornará todos os resultados do servidor para o usuário.

Exemplos

O para cada... Em... A próxima instrução no exemplo de código do Visual Basic a seguir invoca get__NewEnum método implicitamente.

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

O exemplo de código C++ a seguir mostra como IADsCollection::get__NewEnum é usado para enumerar sessões de serviço de arquivo ativo.

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 Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h
DLL Activeds.dll

Confira também

Códigos de erro ADSI

IADsCollection

IEnumVARIANT

IUnknown