Провайдеры WMI — знакомство

Провайдеры WMI — знакомство WMI - администрирование Windows

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

Все провайдеры (WMI providers), зарегистрированные в репозитории CIM есть не что иное, как экземпляры системного класса __Win32Provider, данный класс отвечает за регистрацию информации относительно физической реализации провайдера WMI (смотрите статью «Классы WMI, пространство имен и CIM«).

Процесс взаимодействия провайдеров с CIMOM и управляемыми объектами не один и тот же. Так, с CIMOM общение происходит за счет стандартного интерфейса прикладного программирования WMI (WMI API), а с управляемыми объектами – за счет API интерфейса данного объекта. Такая технология общения позволяет скрыть детали относительно внутренней реализации управляемых объектов, тем самым, дает возможность взаимодействовать CIMOM с данными объектами единообразно, используя один и тот же WMI API

Если говорить о физической реализации провайдеров WMI, то они являются серверами COM или DCOM, и представлены в системе в виде динамических библиотек (DLL). Данные библиотечные файлы, как правило, находятся в системной папке System32, в каталоге Wbem. По ходу статьи мы рассмотрим основные провайдеры WMI, которые отвечают за работу с подсистемой Win32, журналом событий, реестром и так далее. Также стоит сделать акцент на том, что WMI предоставляет возможности для создания и установки провайдеров, это позволяет сразу работать с устройствами или службами специфичного характера.

Для примера, откройте приложение CIM Studio и просмотрите экземпляры системного класса __Win32Provider, результат на рисунке ниже.

Класс __Win32Provider инструментария Windows Management Instrumentation

На первый взгляд может показаться, что все провайдеры WMI одинаковы и что они просто предоставляют классы, но это не так.

Типы WMI провайдеров

  • Class(провайдер классов) – Отвечает за предоставление, изменение, удаление и перечисление классов, которые являются специфичными для конкретного провайдера. Тип регистрации – __ClassProviderRegistration. Примером служит провайдер Active Directory и SNMP. WMI Provider.
  • Instance(Провайдер экземпляров) — Отвечает за предоставление, изменение, удаление и перечисление экземпляров системных или специфичных для провайдера классов. Каждый экземпляр предоставляет управляемый объект. Также может поддерживать обработку запросов. Тип регистрации – __InstanceProviderRegistration. Например, провайдер реестра и Win32.
  • Property(провайдер свойств) – Отвечает за предоставление и изменение значений свойств индивидуальных объектов. Тип регистрации – __PropertyProviderRegistration. Например, провайдер реестра.
  • Method(провайдер методов) – Отвечает за предоставление методов класса, специфичного для провайдера. Тип регистрации – __MethodProviderRegistration. Например, провайдер реестра и Win32.
  • Event (провайдер событий) – Отвечает за генерацию уведомления о событиях WMI. Тип регистрации – __EventProviderRegistration. Например, провайдер реестра и SNMP. WMI Provider
  • Event Consumer (провайдер потребителя событий) – Просто действуют как потребитель событий WMI. Тип регистрации – __EventConsumerProviderRegistration. Например, потребитель событий командной строки, SMTP и скрипта.
WMI providers type

Ниже показан список стандартных провайдеров WMI и связанных с ними динамических библиотек.

Стандартные провайдеры WMI

  • Провайдер каталога ActiveDirectory (ActiveDirectoryprovider) — Позволяет обращаться к объектам Active Directory как к объектам WMI, динамическая библиотека Dsprov.dll
  • Провайдер журнала событий (EventLogprovider) — Обеспечивает управление журналом событий (выборка по определенному критерию записей для чтения, создание резервных копий и очистка журнала, изменение настроек и т. д.). Также этот провайдер позволяет обрабатывать события, генерируемые журналом (например, добавление в журнал записи определенного типа), Ntevt.dll.
  • Провайдер системных счетчиков производительности (Perfomance Counter provider) — Обеспечивает доступ к счетчикам производительности, т. е. к данным, позволяющим численно оценивать производительность системы, Wbemperf.dll
  • Провайдер реестра (Registryprovider) — Позволяет читать данные из реестра, создавать и модифицировать там ключи и разделы. Кроме этого, провайдер обеспечивает генерацию события WMI при изменении определенного ключа или ветви реестра,Stdprov.dll
  • Провайдер SNMP-устройств (SNMP provider) — Является шлюзом для доступа к системам и устройствам, которые управляются с помощью протокола SNMP (Simple Network Management Protocol), Snmpincl.dll
  • Провайдер драйверов устройств (WDM provider) — Позволяет получить доступ к информации низкого уровня о драйверах устройств Windows Driver Model (WDM); в качестве таких устройств могут выступать, например, порты ввода/вывода или сетевые платы, Wmiprov.dll
  • Провайдер подсистемы Win32 (Win32 provider) — Обеспечивает доступ к информации о компьютере, операционной системе, подсистеме безопасности, дисках, периферийных устройствах, файловых системах, файлах, папках, сетевых ресурсах, принтерах, процессах, сервисах и т. п, Cimwin32.dll
  • Провайдер инсталлированных программных продуктов (WindowsInstallerprovider) — Позволяет получить информацию об инсталлированном программном обеспечении, Msiprov.dll

Один провайдер WMI может выполнять сразу несколько ролей, так, провайдер реестра (Registry provider) выполняет следующие роли:

  1. Провайдер событий
  2. Провайдер экземпляров
  3. Провайдер методов
  4. Провайдер свойств

Аналогично, провайдер EventLog также поддерживает несколько ролей. В его состав входят такие объекты как Event Log Computer, Event Log Record и Event Log File. Сам EventLog является провайдером типа Instance (провайдер экземпляров), поскольку позволяет определять несколько экземпляров для собственных классов. Также, для объекта Event Log File реализованы методы backup и restore, которые позволяют создавать резервные копии файлов Event Log и далее восстанавливать их средствами Windows Management Instrumentation, что позволяет считать провайдер Event Log провайдером методов (Method). Помимо этого, Event Log позволяет уведомлять о создании новых записей в файлах Event Log, тем самым, выступая еще и в роли провайдера событий (Event).

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий