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


Инициализация поставщика

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

Однако все поставщики инициализируются через интерфейс IWbemProviderInit и информируют WMI о состоянии инициализации через интерфейс IWbemProviderInitSink.

В следующей процедуре описывается, как инициализировать поставщика.

Инициализация поставщика

  1. Реализуйте IWbemProviderInit::Initialize для вашего поставщика.

    Когда WMI определяет, что клиенту требуются службы поставщика, WMI загружает поставщика, вызывая метод IWbemProviderInit::Initialize.

  2. Реализуйте все интерфейсы, уникальные для вашего типа поставщика.

  3. Сообщите 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

настройка дескрипторов безопасности namespace

Обеспечение безопасности вашего поставщика