7.2 Интерфейс WMI
7.2 Интерфейс WMI
Как уже отмечалось, модель CIM определена в рабочей группе DMTF и принята к использованию ассоциацией SNIA. Интерфейс WMI представляет собой реализацию модели CIM от Microsoft. Другими словами, WMI – это «CIM для Windows».
Интерфейс WMI был разработан для режима ядра и пользовательского режима. Операционная система Windows NT 4.0 SP6 поставлялась с интерфейсом WMI только для пользовательского режима. В Windows 2000, Windows ХР и Windows Server 2003 интерфейс WMI реализован как в режиме ядра, так и в пользовательском режиме.
Интерфейс WMI имеет трехуровневую архитектуру (рис. 7.1).
Уровень приложений WMI.
Уровень служб WMI.
Уровень поставщиков WMI.
На самом верху находится уровень приложений WMI. Приложения WMI обычно используются для управления системой. Независимые поставщики программного обеспечения создают приложения управления с помощью интерфейса, предоставляемого службой WMI, или с помощью интерфейса сценариев, который размещен уровнем выше службы WMI. Несколько приложений WMI могут сосуществовать на одном и том же компьютере.
Далее следует уровень службы WMI, который включает в себя единственный компонент – собственно службу WMI. Эта служба поставляется в составе Windows NT и представляет собой реализацию схемы, основанной на модели CIM. Иногда службу WMI называют объектным диспетчером CIM, или
Рис. 7.1. Архитектура WMI
CIMOM (CIM Object Manager). Служба WMI предоставляет единый интерфейс для приложений управления. Источник информации и тип приложения управления не имеют значения. Другими словами, служба WMI осуществляет операции мультиплексирования и демультиплексирования запросов между приложениями и различными поставщиками. Кроме того, служба предоставляет интерфейс сценариев WMI, который позволяет с помощью любого языка сценариев, поддерживаемого интерфейсом Windows Scripting Host (Visual Basic, JScript, VBScript), получать доступ к объектам службы WMI.
Последним в иерархии представлен уровень поставщиков WMI. На этом уровне находятся различные поставщики WMI: одни из них созданы компанией Microsoft, другие предоставлены сторонними производителями. Поставщики WMI создаются с помощью набора WMI SDK, который входит в пакет Platform SDK и включает в себя обычные динамически подключаемые библиотеки пользовательского режима. Компания Microsoft создала большое количество поставщиков WMI. Производители компьютеров, программного и аппаратного обеспечения также создают различных поставщиков. Например, производитель компьютеров может создать поставщика WMI, который позволяет наблюдать за различными параметрами внутри корпуса сервера, например за температурой и скоростью вращения вентиляторов. Такой поставщик WMI может даже подавать сигнал тревоги, когда открывается корпус сервера.
Многие поставщики WMI от Microsoft поддерживают управление приложениями пользовательского уровня и службами. Особое значение имеет поставщик WDM (Windows Driver Model), который позволяет предоставлять события и данные драйверов режима ядра пользовательским приложениям. Программный код режима ядра и драйвера находится под управлением кода WMI, однако от разработчиков драйверов создание поставщика WMI не требуется.
Расширение WMI для WDM предоставляет методы публикации информации и передачи событий от драйверов режима ядра. WMI может быть реализован в виде драйвера, который получает пакет запроса ввода-вывода (IRP). Кроме того, интерфейс WMI может быть реализован в виде драйвера мини- портов SCSI, Storport или NDIS. В каждом из этих случаев драйвер порта, предоставленный компанией Microsoft, выполнит необходимую трансляцию данных между пакетом IRP и интерфейсом мини-порта. Компания Microsoft реализовала интерфейс WMI в различных драйверах классов и портов. Производители также могут добавлять возможности WMI в драйверы собственных устройств. WMI реализуется в драйверах с помощью набора Windows Driver Development Kit. Интерфейс WMI внедряет новую функцию с помощью пакета IRP_MJ_SYSTEMCONTROL и позволяет управлять параметрами устройства.
Интерфейс WMI предоставляет массу возможностей для приложений управления. Например, приложение управления может зарегистрироваться в WMI для получения уведомлений в описанных ниже ситуациях.
Изменение определенного управляемого объекта описанным способрм, например при достижении температурой определенного значения.
Создание нового экземпляра управляемого объекта.
Удаление экземпляра управляемого объекта.
Удовлетворение сложного условия (например, условий 1 и 2, но не условия 3). Обратите внимание, что контроль за условиями могут обеспечивать различные поставщики. Более того, запросы проверки сложных условий встроены в язык, который называется WMI Query Language (WQL); его синтаксис напоминает SQL. Язык WQL позволяет опрашивать управляемые объекты, однако не модифицировать их.
Возможность расширения управляемого объекта путем создания поставщика.
Еще один важный аспект состоит в предоставлении стандартного способа дифференциации продуктов производителей программного и аппаратного обеспечения. Производитель может создать драйвер, поддерживающий WMI, или написать поставщика WMI, который работает с необходимым компонентом конкретного устройства. Приложения управления могут динамически обнаруживать и обрабатывать новые объекты управления, которые предоставляет производитель. Это делается с помощью кода WMI созданного производителем драйвера или поставщика.
Компания Microsoft широко использует интерфейс WMI для управления подсистемами хранения и приложениями. Программы Microsoft Exchange 2000 и SQL Server 2000 находятся под управлением поставщиков WMI, специально созданных для этой цели. Управление дисками и интерфейсом iSCSI также являются примером использования интерфейса WMI.