Метод IADsCollection::get__NewEnum (iads.h)
Метод IADsCollection::get__NewEnum получает зависимый объект перечислителя, реализующий IEnumVARIANT для этого объекта коллекции ADSI. Имейте в виду, что в имени функции есть два символа подчеркивания (get__NewEnum).
Синтаксис
HRESULT get__NewEnum(
[out] IUnknown **ppEnumerator
);
Параметры
[out] ppEnumerator
Указатель на указатель на интерфейс IUnknown в объекте перечислителя для этой коллекции.
Возвращаемое значение
Этот метод поддерживает стандартные возвращаемые значения, включая S_OK, E_FAIL или E_NOTIMPL. Дополнительные сведения и другие возвращаемые значения см. в разделе Коды ошибок ADSI.
Комментарии
Если сервер поддерживает поиск по страницам и клиент указал ограничение страницы, превышающее максимально допустимое количество результатов поиска на сервере, метод IADsCollection::get__NewEnum возвращает ошибки следующим образом:
- Если сервер возвращает ошибку без результатов, функция возвращает только ошибку.
- Если сервер возвращает частичные результаты с ошибкой или без ошибки, например максимально допустимое количество результатов поиска на сервере, функция возвращает пользователю частичные результаты с сервера.
- Если сервер возвращает все результаты с ошибкой или без них, например максимальное количество результатов поиска на каждой странице и все результаты на нескольких страницах, функция возвращает все результаты с сервера пользователю.
Примеры
Для каждого... В... Следующий оператор в следующем примере кода Visual Basic вызывает метод get__NewEnum неявно.
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
В следующем примере кода C++ показано, как используется IADsCollection::get__NewEnum для перечисления активных сеансов файловой службы.
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;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | iads.h |
DLL | Activeds.dll |