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


Реализация основного интерфейса для поставщика класса

Существует два способа реализации поставщика класса: реализация интерфейса в качестве поставщика push-уведомлений или поставщика по запросу.

В этой статье рассматриваются следующие разделы:

Реализация основного интерфейса для поставщика класса push-уведомлений

В то время как все поставщики реализуют IWbemProviderInit для инициализации и по крайней мере один другой интерфейс в качестве основного интерфейса, поставщик push-уведомлений реализует только IWbemProviderInit.

Убедитесь, что реализация выполняет следующие задачи:

  • Извлекает соответствующие данные класса.
  • Помещает данные в репозиторий WMI.
  • Удаляет устаревшие данные.

После завершения процесса инициализации WMI обрабатывает все запросы приложений для классов, принадлежащих поставщику push-уведомлений, без какого-либо дальнейшего взаимодействия с поставщиком. После этого поставщик принудительной отправки эффективно действует как клиент WMI, а не поставщик. Дополнительные сведения о реализации IWbemProviderInit см. в разделе Инициализация поставщика.

Примечание

При вызове WMI для создания, обновления или удаления данных в поставщике push-уведомлений задайте параметр lFlags , чтобы включить флаг WBEM_FLAG_OWNER_UPDATE во все вызовы методов IWbemServices .

 

Реализация основного интерфейса для поставщика класса по запросу

Поставщик извлечения класса должен реализовывать IWbemServices в качестве основного интерфейса. Интерфейс IWbemServices поддерживает извлечение, обновление, удаление данных, перечисление и обработку запросов. Однако, поскольку IWbemServices также используется приложениями и поставщиками для запроса служб WMI, IWbemServices содержит множество методов, которые не имеют отношения к поставщику класса. Реализация должна поддерживать извлечение и перечисление классов с помощью методов GetObjectAsync и CreateClassEnumAsync соответственно. В следующей таблице перечислены дополнительные асинхронные методы IWbemServices , которые можно реализовать для поставщика классов.

Метод Компонент
PutInstanceAsync Изменение
DeleteClassAsync Удаление

 

Примечание

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

 

Поставщик класса должен предоставить реализацию заглушки, которая возвращает WBEM_E_PROVIDER_NOT_CAPABLE для всех других методов IWbemServices , которые не поддерживают набор функций. В частности, WMI не поддерживает обработку запросов для поставщиков классов. Таким образом, поставщик класса должен возвращать WBEM_E_PROVIDER_NOT_CAPABLE из реализации IWbemServices::ExecQueryAsync, задать для свойства регистрации QuerySupportLevelsзначение NULL или оба значения.

Интерфейсы, которые реализует поставщик класса, очень похожи на интерфейсы для поставщика экземпляров и поставщика метода. На самом деле один поставщик может выступать в качестве всех трех типов поставщиков, реализовав все методы и правильно зарегистрировав.