Метод IEnumWbemClassObject::NextAsync (wbemcli.h)
Используйте метод NextAsync , если требуется управляемое асинхронное извлечение объектов в приемник. Обычное асинхронное извлечение, например вызов IWbemServices::ExecQueryAsync, приводит к неконтролируемой доставке объектов в реализацию IWbemObjectSink вызывающей стороны. Этот метод полезен в случаях, когда компонент управляет доставкой объектов.
Синтаксис
HRESULT NextAsync(
[in] ULONG uCount,
[in] IWbemObjectSink *pSink
);
Параметры
[in] uCount
Количество запрашиваемых объектов.
[in] pSink
Приемник для получения объектов. Приемник должен быть реализован вызывающим. При запросе каждого пакета объектов они доставляются в параметр pSink метода Indicate , за которым следует окончательный вызов параметра pSink метода SetStatus . Если приемник будет использоваться для доставки объектов, этот метод возвращает WBEM_S_NO_ERROR, даже если количество доставляемых объектов меньше запрошенного. Однако если объектов больше нет, параметр pSink игнорируется (вызовы параметра pSinksetStatus не выполняются). Вместо этого этот метод возвращает WBEM_S_FALSE.
Возвращаемое значение
Метод NextAsync возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.
Комментарии
Вызов com-функции GetErrorInfo предоставляет дополнительные сведения об ошибке. Коды ошибок, относящихся к COM, также могут быть возвращены, если сетевые проблемы приводят к потере удаленного подключения к управлению Windows.
Этот вызов возвращается немедленно, и доставка в приемник выполняется в фоновом режиме. Если выполняется несколько вызовов этого метода из одного или нескольких потоков, они логически помещаются в очередь и порядок вызовов и доставки объектов сохраняется. Несколько вызовов этого метода из одного или нескольких блоков потоков не возвращаются до тех пор, пока не будут обслужены все объекты приемника, связанные с предыдущими вызовами этого метода. Вызов метода Reset не влияет на доставку объектов, которые в настоящее время выполняется в результате предыдущих вызовов. Метод Reset вызывает новые вызовы только в начале последовательности объектов.
Если количество запрошенных объектов доступно немедленно, функция возвращает WBEM_S_NO_ERROR. Если доступно меньше запрошенных объектов, возвращаются доступные объекты и возвращаются WBEM_S_NO_ERROR . Остальные объекты доставляются предоставленным пользователем приемником.
По мере того как объекты становятся доступными, реализация вызывающего объекта IWbemObjectSink::Indicate вызывается ноль или более раз для доставки объектов. За этим следует вызов IWbemObjectSink::SetStatus со значением WBEM_S_NO_ERROR , если возвращаются элементы uCount .
Если доступно меньше объектов, чем запрошенное число, для доступных объектов вызывается параметр Указать . Затем вызывается SetStatus со значением WBEM_S_FALSE или кодом ошибки, если произошла ошибка.
Если запрошенное количество объектов доставлено, за последним объектом следует вызов SetStatus с кодом состояния WBEM_S_NO_ERROR. Если перечисление завершается до того, как можно будет доставить запрошенное количество объектов, метод SetStatus имеет код состояния WBEM_S_FALSE.
Если доступных объектов нет, параметр Указывать не вызывается. Тем не менее, последний вызов SetStatus всегда выполняется для указания состояния всей операции.
Так как обратный вызов может быть возвращен не на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Если требуется асинхронное взаимодействие, см. статью Вызов метода .
Дополнительные сведения об использовании методов полусинхронно см. в разделах IEnumWbemClassObject::Next и Вызов метода.
Требования
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |
Библиотека | Wbemuuid.lib |
DLL | Fastprox.dll |