Partager via


IADsCollection ::get__NewEnum, méthode (iads.h)

La méthode IADsCollection ::get__NewEnum obtient un objet énumérateur dépendant qui implémente IEnumVARIANT pour cet objet de collection ADSI. N’oubliez pas qu’il existe deux caractères de soulignement dans le nom de la fonction (get__NewEnum).

Syntaxe

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

Paramètres

[out] ppEnumerator

Pointeur vers un pointeur vers l’interface IUnknown sur l’objet énumérateur pour cette collection.

Valeur retournée

Cette méthode prend en charge les valeurs de retour standard, notamment S_OK, E_FAIL ou E_NOTIMPL. Pour plus d’informations et d’autres valeurs de retour, consultez Codes d’erreur ADSI.

Remarques

Lorsqu’un serveur prend en charge la recherche paginée et que le client a spécifié la limite de pages supérieure au nombre maximal de résultats de recherche autorisés sur le serveur, la méthode IADsCollection ::get__NewEnum retourne les erreurs des manières suivantes :

  • Si le serveur retourne une erreur sans résultat, la fonction retourne l’erreur uniquement.
  • Si le serveur retourne des résultats partiels avec ou sans erreur, par exemple, le nombre maximal de résultats de recherche autorisés sur le serveur, la fonction retourne les résultats partiels du serveur à l’utilisateur.
  • Si le serveur retourne tous les résultats avec ou sans erreur, par exemple, le nombre maximal de résultats de recherche sur chaque page et tous les résultats via plusieurs pages, la fonction retourne tous les résultats du serveur à l’utilisateur.

Exemples

Pour chaque... Dans... L’instruction suivante dans l’exemple de code Visual Basic suivant appelle implicitement get__NewEnum méthode.

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

L’exemple de code C++ suivant montre comment IADsCollection ::get__NewEnum est utilisé pour énumérer les sessions de service de fichiers actives.

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

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 iads.h
DLL Activeds.dll

Voir aussi

Codes d’erreur ADSI

IADsCollection

IEnumVARIANT

IUnknown