Интерфейс IWbemObjectSink (wbemcli.h)
Интерфейс IWbemObjectSink создает интерфейс приемника, который может получать все типы уведомлений в модели программирования WMI. Клиенты должны реализовать этот интерфейс для получения как результатов асинхронных методовIWbemServices, так и определенных типов уведомлений о событиях. Поставщики используют, но не реализуют этот интерфейс для предоставления событий и объектов WMI.
Как правило, поставщики вызывают реализацию, предоставленную им WMI. В таких случаях вызовите команду Показать , чтобы предоставить объекты службе WMI. После этого вызовите SetStatus , чтобы указать конец последовательности уведомлений. Можно также вызвать SetStatus , чтобы указать ошибки, когда в приемнике нет объектов.
При программировании асинхронных клиентов WMI пользователь предоставляет реализацию. WMI вызывает методы для доставки объектов и установки состояния результата.
Наследование
Интерфейс IWbemObjectSink наследуется от интерфейса IUnknown . IWbemObjectSink также имеет следующие типы элементов:
Методы
Интерфейс IWbemObjectSink содержит следующие методы.
IWbemObjectSink::Indicate Вызывается источником для предоставления уведомления. |
IWbemObjectSink::SetStatus Вызывается источниками для указания конца последовательности уведомлений или для отправки других кодов состояния в приемник. |
Комментарии
При реализации приемника подписки на события (IWbemObjectSink или IWbemEventSink) не вызывайте WMI из методов Indicate или SetStatus в объекте приемника. Например, вызов IWbemServices::CancelAsyncCall для отмены приемника из реализации Параметра Указывает может помешать состоянию WMI. Чтобы отменить подписку на события, установите флаг и вызовите IWbemServices::CancelAsyncCall из другого потока или объекта. Для реализаций, не связанных с приемником событий, таких как объект, перечисление и извлечение запросов, можно вызвать обратно в WMI.
Реализации приемника должны обрабатывать уведомление о событии в пределах 100 MSEC, так как поток WMI, доставляющий уведомление о событии, не может выполнять другие действия, пока объект приемника не завершит обработку. Если уведомление требует большого объема обработки, приемник может использовать внутреннюю очередь для обработки другим потоком.
Примеры
Следующий пример кода представляет собой простую реализацию приемника объектов. Этот пример можно использовать с IWbemServices::ExecQueryAsync или IWbemServices::CreateInstanceEnumAsync для получения возвращенных экземпляров:
C++ |
---|
|
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |
См. также раздел
Выполнение асинхронного вызова с помощью C++