Инициализация поставщика
Одной из первых задач, которые необходимо закодировать для поставщика, является процесс инициализации, который охватывает все задачи, которые поставщик должен выполнять, что позволяет отправлять и получать информацию из WMI, управлять управляемым объектом и выполнять другие задачи. Каждый тип поставщика имеет другой набор задач, которые он должен выполнять и имеет сопутствующий набор уникальных интерфейсов.
Однако все поставщики инициализируются через интерфейс IWbemProviderInit и информируют WMI о состоянии инициализации через интерфейс IWbemProviderInitSink.
В следующей процедуре описывается, как инициализировать поставщика.
Инициализация поставщика
Реализуйте IWbemProviderInit::Initialize для вашего поставщика.
Когда WMI определяет, что клиенту требуются службы поставщика, WMI загружает поставщика, вызывая метод IWbemProviderInit::Initialize.
Реализуйте все интерфейсы, уникальные для вашего типа поставщика.
Сообщите WMI, что ваш поставщик завершил инициализацию, вызвав IWbemProviderInitSink::SetStatus.
Все реализации IWbemProviderInit::Initialize должны вызывать IWbemProviderInitSink::SetStatus, чтобы сообщить о состоянии инициализации через WMI. Метод SetStatus позволяет WMI определить, готов ли поставщик получать запросы и тип запросов, которые поставщик готов к получению.
В следующей процедуре описывается, как сообщить об успешной инициализации.
Сообщите об успешной инициализации
Задайте значение WBEM_S_INITIALIZEDдля параметра IStatusSetStatus.
Возвращая WBEM_S_INITIALIZED, поставщик указывает готовность обрабатывать запросы от приложений, WMI и других поставщиков. После получения WBEM_S_INITIALIZED WMI вызывает метод IWbemProviderInit::QueryInterface в поставщике. Этот запрос извлекает указатель на первичный интерфейс поставщика.
В следующей процедуре описывается, как сообщить об ошибке во время инициализации.
Сообщить об ошибке во время инициализации
Задайте для параметра IStatusSetStatus значение WBEM_E_FAILED. Поставщики представлений WMI, возвращающие WBEM_E_FAILED как не функциональные.
WMI освобождает указатель IWbemProviderInit либо после того, как WMI получает указатель на первичный интерфейс поставщика, либо в случае неудачной инициализации.
Связанные разделы
-
Разработка поставщика WMI