Metodo IADsCollection::get__NewEnum (iads.h)

Il metodo IADsCollection::get__NewEnum ottiene un oggetto enumeratore dipendente che implementa IEnumVARIANT per questo oggetto di raccolta ADSI. Tenere presente che sono presenti due caratteri di sottolineatura nel nome della funzione (get__NewEnum).

Sintassi

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

Parametri

[out] ppEnumerator

Puntatore a un puntatore all'interfaccia IUnknown nell'oggetto enumeratore per questa raccolta.

Valore restituito

Questo metodo supporta i valori restituiti standard, tra cui S_OK, E_FAIL o E_NOTIMPL. Per altre informazioni e altri valori restituiti, vedere Codici di errore ADSI.

Commenti

Quando un server supporta la ricerca in pagina e il client ha specificato il limite di pagina maggiore del numero massimo di risultati di ricerca consentiti nel server, il metodo IADsCollection::get__NewEnum restituisce errori nei modi seguenti:

  • Se il server restituisce un errore senza risultati, la funzione restituisce solo l'errore.
  • Se il server restituisce risultati parziali con o senza errore, ad esempio i risultati massimi di ricerca consentiti nel server, la funzione restituisce i risultati parziali dal server all'utente.
  • Se il server restituisce tutti i risultati con o senza errore, ad esempio, i risultati massimi della ricerca in ogni pagina e tutti i risultati tramite più pagine, la funzione restituisce tutti i risultati dal server all'utente.

Esempio

Per ogni... In... L'istruzione successiva nell'esempio di codice Visual Basic seguente richiama in modo implicito get__NewEnum metodo.

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

Nell'esempio di codice C++ seguente viene illustrato come viene usato IADsCollection::get__NewEnum per enumerare le sessioni del servizio file attive.

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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h
DLL Activeds.dll

Vedi anche

Codici di errore ADSI

IADsCollection

IEnumVARIANT

IUnknown