Классы WMI, пространство имен и CIM

Классы WMI, пространство имен и CIM WMI - администрирование Windows

Любой элемент системы, будь то служба или устройство, управляемое средствами Windows Management Instrumentation соответствует заданный класс. В свою очередь, каждый класс WMI содержит четко определенную структуру, свойства, методы и квалификаторы (сами квалификаторы могут присутствовать у методов, свойств и классов). Для описания классов используется язык MOF (Managed Object Format), который в свою очередь основывается на языке IDL (Interface Definition Language), язык IDL используется при описании интерфейса для COM-объектов.

Все классы WMI можно разделить на типы, исходя из способа хранения информации об управляемом ресурсе.

Типы классов WMI – хранение информации

Абстрактный класс (abstract class) – формирование новых классов-потомков (абстрактных и неабстрактных), служит как шаблон. Данный тип класса нельзя использовать для получения экземпляра управляемого ресурса.

Статический класс (static class) – позволяет определить данные, физически хранящиеся в репозитории CIM (например, данные относительно собственных настроек WMI). При доступе к экземплярам статических классов нет необходимости прибегать к помощи провайдеров.

Динамический класс (dynamic class) – формирует управляемый ресурс, данные о котором возвращаются в динамическом режиме соответствующим провайдером.

Ассоциативный класс (association class) – является абстрактным, статическим или динамическим классом, он отвечает за описание логической связи между двумя классами или же управляемыми ресурсами. Для примера, можно просмотреть ассоциативные классы средствами CIM Studio. Необходимость в ассоциативных класса исходит из того, что практически все объекты системы находятся в тесной связи, например, объект «компьютер» включает объекты «процессор», «программное обеспечение», «операционная система», «активный процесс» и т. д.

Типы классов Windows Management Instrumentation - первая модель

Исходя из информативной модели, классы также разделяют на типы.

Типы классов WMI – информативная модель

Системные классы – используются для формирования конфигурации и выполнения внутренних функций WMI. Данный тип классов WMI может быть статичным или абстрактным. Все названия системных классов начинаются с двойного подчеркивания, например, __NAMESPACE, __Win32Provider.

Классы основной модели (core model) – сюда относятся абстрактные классы, обеспечивающие интерфейс со всеми областями управления. Имена этих классов начинаются с префикса «CIM_», например, CIM_ManagedSystemElement.

Классы общей модели (common model) – по сути, общая модель есть расширение основной модели. Тут находятся WMI классы, которые не зависят от конкретной технологии или реализации, то есть, не зависят от типа ОС). Имена данных классов также начинаются с префикса «CIM_», например, CIM_LogicalFile.

Классы модели расширения (extension model) – классы этой категории включает в себя специфичные для каждой технологии или реализации дополнения к общей модели. Имена данных классов начинаются с префикса «Win32_», например, Win32_PageFile.

Типы классов Windows Management Instrumentation - вторая модель

Как упоминалось выше, классам присущие такие понятия как свойства, методы и квалификаторы.

  • Свойства – отвечают за однозначную идентификацию экземпляра класса, который предоставляет заданный управляемый ресурс, а также, за описание текущего состояния данного ресурса. Свойство может быть доступно или не доступно для записи (изменение значения), для проверки доступности свойства для записи стоит проверить значение квалификатора Write этого свойства, если значение равно true, то свойство доступно для записи.
  • Методы – отвечают за выполнение заданных действий над управляемым ресурсом, за который отвечает класс текущего метода.
  • Квалификаторы классов – содержат информацию о выбранном классе, например, тип класса (динамический, абстрактный или ассоциативный).
  • Квалификаторы свойств — содержат информацию о выбранном свойстве класса WMI, например, тип свойства (CIMType), доступность для записи (Write), доступность для чтения (Read) и так далее.
  • Квалификаторы методов — содержат информацию о выбранном методе класса, например, права доступа для выполнения метода (Privileges).

CIM и пространство имен

Прежде чем двигаться дальше, рассмотрим такие понятия:

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

Репозиторий CIM является своеобразным хранилищем WMI классов и объектов. Так как количество управляемых объектов системы всегда разное, то и количество хранящихся в репозитории CIM классов сильно зависит от версии ОС, удобным инструментом для просмотра и работы с классами является утилита WMI CIM Studio из пакета WMI Tools. Думаю, что не ошибусь, если скажу, что обще количество классов может превышать 3000-4000, отсюда следует один неприятный момент… Осилить в идеале весть Windows Management Instrumentation и его функционал просто нереально.

Поскольку Windows Management Instrumentation является иерархической системой, то все классы в репозитории CIM сгруппированы по своей принадлежности в пространства имен (namespaces). Пространства имен также формируют иерархическую структуру (как каталоги в операционной системе), корневым пространством имен является Root). Количество пространства имен, как и количество классов, зависит от операционной системы. Однако, четыре пространства имен всегда присутствуют и находятся на один уровень ниже корневого пространства Root, это:

  1. CIMV2
  2. Default
  3. Security
  4. WMI.
Просмотр пространства имен в утилите WMI CIM Studion

Стоит учитывать, что пространство имен может содержать подпространства, так в пространство CIMV2 входят подпространства имен Applications и ms_409. Также возможна ситуация, когда провайдеры WMI формируют собственные пространства имен, так пространство WMI определяется WMI-провайдером для драйверов устройств (Провайдеры WMI — знакомство).

Относительно классов WMI, которые находятся в репозитории CIM, существуют некоторые правила:

  • Имена всех классов в одном пространстве имен должны быть уникальными
  • Класс из одного пространства имен не может иметь потомка или предка из другого пространства имен.
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий