Поделиться через


Метод IWbemObjectSink::Indicate (wbemcli.h)

Метод Indicate вызывается источником для предоставления уведомления. Как правило, WMI вызывает клиентную реализацию этого интерфейса после выполнения клиентом одного из асинхронных методов IWbemServices. В других случаях различные типы поставщиков вызывают реализацию, экспортированную WMI для доставки событий. Поэтому в некоторых случаях клиентскому коду может потребоваться реализовать этот интерфейс, а в других случаях использовать реализацию другого компонента.

Используйте этот интерфейс и метод в сочетании с асинхронными методами интерфейса IWbemServices .

Клиенты и поставщики должны реализовать этот интерфейс для получения уведомлений или выполнения асинхронных методов IWbemServices. Дополнительные сведения см. в разделе Вызов метода .

Синтаксис

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

Параметры

[in] lObjectCount

Количество объектов в следующем массиве указателей.

[in] apObjArray

Массив указателей на интерфейсы IWbemClassObject . Сама память массива доступна только для чтения и принадлежит вызывающей объекту метода . Так как это параметр in, реализация имеет возможность вызывать IWbemClassObject::AddRef для любого указателя объекта в массиве и удерживать его перед возвратом, если объекты будут использоваться после возврата метода, в соответствии с правилами COM. Если объекты используются только на протяжении всего вызова Indicate , то вызывать AddRef для каждого указателя объекта не нужно.

Возвращаемое значение

Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.

Комментарии

При реализации приемника подписки на события (IWbemObjectSink или IWbemEventSink) не вызывайте WMI из метода Indicate объекта приемника. Например, вызов IWbemServices::CancelAsyncCall из реализации Параметра Указывает может помешать состоянию WMI. Чтобы отменить подписку на события, установите флаг и вызовите IWbemServices::CancelAsyncCall из другого потока или объекта. Для реализаций, не связанных с приемником событий, таких как объект, перечисление и извлечение запросов, можно вызвать обратно в WMI.

Реализации приемника должны обрабатывать уведомление о событии в пределах 100 MSEC, так как поток WMI, доставляющий уведомление о событии, не может выполнять другие действия, пока объект приемника не завершит обработку. Если уведомление требует большого объема обработки, приемник может использовать внутреннюю очередь для обработки другим потоком.

Когда поставщик событий вызывает Команду Показать , чтобы предоставить событие, вызов может завершиться сбоем с WBEM_E_SERVER_TOO_BUSY. Поставщик может ответить на это сообщение, повторно запуская событие.

Примечание Так как обратный вызов в приемник может быть возвращен не на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Дополнительные сведения см. в разделе Вызов метода .
 

Требования

   
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header wbemcli.h (включая Wbemidl.h)
Библиотека Wbemuuid.lib
DLL Fastprox.dll

См. также раздел

IWbemObjectSink

IWbemObjectSink::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync