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