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 |