Метод IWbemObjectSink::SetStatus (wbemcli.h)
Метод IWbemObjectSink::SetStatus вызывается источниками, чтобы указать конец последовательности уведомлений или отправить другие коды состояния в приемник. Метод IWbemObjectSink::Indicate может быть вызван до вызова SetStatus.
Как правило, клиент реализует интерфейс IWbemObjectSink и выполняет методы IWbemServices , которые возвращают свои результаты с помощью интерфейса IWbemObjectSink . Во время этой операции WMI вызывает указать столько раз, сколько требуется, а затем последний вызов SetStatus и, во многих случаях, Release.
Синтаксис
HRESULT SetStatus(
[in] long lFlags,
[in] HRESULT hResult,
[in] BSTR strParam,
[in] IWbemClassObject *pObjParam
);
Параметры
[in] lFlags
Битовая маска сведений о состоянии. Состояние операции можно получить, проверив параметр hResult .
WBEM_STATUS_COMPLETE
Операция завершена.
WBEM_STATUS_PROGRESS
Операция не завершена.
WBEM_STATUS_REQUIREMENTS
Используется при активации после фильтрации.
[in] hResult
Для этого параметра задано значение HRESULT асинхронной операции или уведомления. Это либо код ошибки, если произошла ошибка, либо объем хода выполнения, достигнутый при асинхронном вызове.
[in] strParam
Получает указатель на BSTR, доступный только для чтения, если исходная асинхронная операция возвращает строку. Например, при использовании PutInstanceAsync вызывается SetStatus с этим параметром, равным пути к объекту только что созданного экземпляра.
[in] pObjParam
В случаях, когда возвращается сложный объект ошибки или объекта состояния, он содержит указатель на объект ошибки. Если объект является обязательным после возврата SetStatus , вызываемый объект должен использовать метод AddRef в указателе до возврата вызываемого объекта.
Возвращаемое значение
Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.
Комментарии
При реализации приемника подписки на события (IWbemObjectSink или IWbemEventSink) не вызывайте WMI из метода SetStatus в объекте приемника. Например, вызов IWbemServices::CancelAsyncCall из реализации SetStatus может помешать состоянию WMI. Чтобы отменить подписку на события, установите флаг и вызовите IWbemServices::CancelAsyncCall из другого потока или объекта. Для реализаций, не связанных с приемником событий, таких как объект, перечисление и извлечение запросов, можно вызвать обратно в WMI.
Реализации приемника должны обрабатывать уведомление о событии в пределах 100 MSEC, так как поток WMI, доставляющий уведомление о событии, не может выполнять другие действия, пока объект приемника не завершит обработку. Если уведомление требует большого объема обработки, приемник может использовать внутреннюю очередь для обработки другим потоком. Для реализаций, не связанных с приемником событий, таких как объект, перечисление и извлечение запросов, можно вызвать обратно в WMI.
Чтобы получать промежуточные обновления состояния через клиентскую реализацию SetStatus, необходимо указать WBEM_FLAG_SENT_STATUS в вызове метода поставщика или службы. Точное состояние можно определить, изучив значения HIWORD и LOWORD для hResult отдельно. Значение LOWORD (hResult) содержит объем хода выполнения, достигнутый на данный момент, а значение HIWORD (hResult) — итог.
Если не указать WBEM_FLAG_SEND_STATUS при вызове поставщика или метода службы, вы гарантированно получите один и только один вызов SetStatus.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |
Библиотека | Wbemuuid.lib |
DLL | Fastprox.dll |