Método IADsCollection::get__NewEnum (iads.h)
El método IADsCollection::get__NewEnum obtiene un objeto enumerador dependiente que implementa IEnumVARIANT para este objeto de colección ADSI. Tenga en cuenta que hay dos caracteres de subrayado en el nombre de función (get__NewEnum).
Sintaxis
HRESULT get__NewEnum(
[out] IUnknown **ppEnumerator
);
Parámetros
[out] ppEnumerator
Puntero a un puntero a la interfaz IUnknown del objeto enumerador de esta colección.
Valor devuelto
Este método admite los valores devueltos estándar, incluidos S_OK, E_FAIL o E_NOTIMPL. Para obtener más información y otros valores devueltos, vea Códigos de error adsi.
Comentarios
Cuando un servidor admite la búsqueda paginada y el cliente ha especificado el límite de páginas mayor que el máximo de resultados de búsqueda permitidos en el servidor, el método IADsCollection::get__NewEnum devuelve errores de las siguientes maneras:
- Si el servidor devuelve un error sin resultados, la función solo devuelve el error.
- Si el servidor devuelve resultados parciales con o sin un error, por ejemplo, los resultados de búsqueda máximo permitidos en el servidor, la función devuelve los resultados parciales del servidor al usuario.
- Si el servidor devuelve todos los resultados con o sin un error, por ejemplo, resultados máximos de búsqueda en cada página y todos los resultados a través de varias páginas, la función devuelve todos los resultados del servidor al usuario.
Ejemplos
El para cada... En... La siguiente instrucción del siguiente ejemplo de código de Visual Basic invoca implícitamente get__NewEnum método.
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
En el ejemplo de código de C++ siguiente se muestra cómo se usa IADsCollection::get__NewEnum para enumerar las sesiones de servicio de archivos activas.
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | iads.h |
Archivo DLL | Activeds.dll |