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 |