Método IADsCollection::get__NewEnum (iads.h)
O método IADsCollection::get__NewEnum obtém um objeto enumerador dependente que implementa IEnumVARIANT para este objeto de coleção ADSI. Lembre-se de que há dois caracteres de sublinhado no nome da função (get__NewEnum).
Sintaxe
HRESULT get__NewEnum(
[out] IUnknown **ppEnumerator
);
Parâmetros
[out] ppEnumerator
Ponteiro para um ponteiro para a interface IUnknown no objeto enumerador dessa coleção.
Retornar valor
Esse método dá suporte aos valores de retorno padrão, incluindo S_OK, E_FAIL ou E_NOTIMPL. Para obter mais informações e outros valores retornados, consulte Códigos de erro ADSI.
Comentários
Quando um servidor dá suporte à pesquisa paginada e o cliente especifica o limite de página maior que o máximo de resultados de pesquisa permitidos no servidor, o método IADsCollection::get__NewEnum retorna erros das seguintes maneiras:
- Se o servidor retornar um erro sem resultados, a função retornará apenas o erro.
- Se o servidor retornar resultados parciais com ou sem um erro, por exemplo, os resultados máximos de pesquisa permitidos no servidor, a função retornará os resultados parciais do servidor para o usuário.
- Se o servidor retornar todos os resultados com ou sem um erro, por exemplo, o máximo de resultados de pesquisa em cada página e todos os resultados por meio de várias páginas, a função retornará todos os resultados do servidor para o usuário.
Exemplos
O para cada... Em... A próxima instrução no exemplo de código do Visual Basic a seguir invoca get__NewEnum método implicitamente.
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
O exemplo de código C++ a seguir mostra como IADsCollection::get__NewEnum é usado para enumerar sessões de serviço de arquivo ativo.
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 | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Servidor mínimo com suporte | Windows Server 2008 |
Plataforma de Destino | Windows |
Cabeçalho | iads.h |
DLL | Activeds.dll |