IADsCollection::get__NewEnum-Methode (iads.h)

Die IADsCollection::get__NewEnum-Methode ruft ein abhängiges Enumeratorobjekt ab, das IEnumVARIANT für dieses ADSI-Auflistungsobjekt implementiert. Beachten Sie, dass der Funktionsname (get__NewEnum) zwei Unterstriche enthält.

Syntax

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

Parameter

[out] ppEnumerator

Zeiger auf einen Zeiger auf die IUnknown-Schnittstelle im Enumeratorobjekt für diese Auflistung.

Rückgabewert

Diese Methode unterstützt die Standardmäßigen Rückgabewerte, einschließlich S_OK, E_FAIL oder E_NOTIMPL. Weitere Informationen und andere Rückgabewerte finden Sie unter ADSI-Fehlercodes.

Hinweise

Wenn ein Server die Auslagerungssuche unterstützt und der Client den Seitengrenzwert angegeben hat, der größer als die auf dem Server zulässige maximale Anzahl von Suchergebnissen ist, gibt die IADsCollection::get__NewEnum-Methode Fehler auf folgende Weise zurück:

  • Wenn der Server einen Fehler ohne Ergebnisse zurückgibt, gibt die Funktion nur den Fehler zurück.
  • Wenn der Server Teilergebnisse mit oder ohne Fehler zurückgibt, z. B. die maximal zulässigen Suchergebnisse auf dem Server, gibt die Funktion die Teilergebnisse vom Server an den Benutzer zurück.
  • Wenn der Server alle Ergebnisse mit oder ohne Fehler zurückgibt, z. B. maximale Suchergebnisse auf jeder Seite und alle Ergebnisse über mehrere Seiten, gibt die Funktion alle Ergebnisse vom Server an den Benutzer zurück.

Beispiele

Die for Each... In... Die next-Anweisung im folgenden Visual Basic-Codebeispiel ruft implizit get__NewEnum-Methode auf.

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

Das folgende C++-Codebeispiel zeigt, wie IADsCollection::get__NewEnum verwendet wird, um aktive Dateidienstsitzungen aufzulisten.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile iads.h
DLL Activeds.dll

Weitere Informationen

ADSI-Fehlercodes

IADsCollection

IEnumVARIANT

IUnknown