Разработка поставщика WMI
Поставщик — это объект Component Object Model (COM), который выступает посредником между WMI и управляемым объектом. Например, если приложение или скрипт запрашивает данные диска с помощью класса WMI Win32_LogicalDisk, данные получаются динамически с помощью предварительно установленного поставщика Win32.
Если вы хотите предоставить данные через WMI другим приложениям, можно создать неуправляемого поставщика кода, написав COM-сервер или с помощью мастера WMI ATL в Visual Studio. Вы можете написать поставщика управляемого кода, используя WMI в рамках .NET Framework. В этом разделе описывается процесс написания неуправляемого COM-поставщика.
Заметка
Чтобы все определения классов WMI для управляемых объектов восстанавливались в репозитории WMI, если WMI имеет сбой и перезапуск, используйте инструкцию автоматического восстановления #pragma препроцессора в файле MOF.
Поставщик состоит из классов, определенных в схемеуправляемого объекта (MOF) и DLL-файле, который выполняет функции поставщика. Например, MOF, определяющий классы поставщика Win32, это CIMWin32.mof, а DLL-библиотека — CIMWin32.dll. Оба файла находятся в %windir%\System32\Wbem.
Схема MOF для поставщика может содержать несколько типов поставщиков. Например, поставщик журнала событий имеет типы поставщиков экземпляров, методов и событий в одном MOF-файле с именем Ntevt.mof. Рекомендуется собрать все классы и схему регистрации для связанных поставщиков в одном файле, а не создать один файл для каждого класса.
Помимо использования предварительно установленных поставщиков, вы можете создать собственный поставщик для предоставления сведений об аппаратном устройстве или операциях программного обеспечения.
В следующей таблице перечислены основные задачи, которые создают поставщика.
Задача | Описание |
---|---|
проектирование классов управляемого формата объектов (MOF) | Создайте модель для сущностей, которыми требуется управлять с помощью WMI, и создайте файл формата УПРАВЛЯЕМОго объекта (MOF), чтобы описать схему. |
поставка данных в WMI путем создания провайдера | Создайте самый простой поставщик, который связан с WMI. |
интеграция поставщика в приложение | Включите поставщика в приложение в качестве компонента, если он не работает постоянно. |
регистрация поставщика | Зарегистрируйте поставщика с помощью COM и WMI. |
Инициализация поставщика | Реализуйте интерфейсы IWbemProviderInit и IWbemProviderInitSink. |
Выполнение вызовов WMI | Вызов интерфейсов WMI через поставщика. |
Имитация клиента | Задайте безопасность для доступа к клиентскому приложению. |
Обновление поставщика | Улучшайте поставщика по мере необходимости. |
выгрузка поставщика | Удалите поставщика из памяти во время завершения работы или при неактивности поставщика. |
Поставщики отладки и классы конфигурации и устранения неполадок поставщиков | Отладьте своего поставщика с помощью средств, предоставляемых WMI. |
получение и предоставление данных на 64-разрядном компьютере | Оцените, требуется ли 32-разрядный поставщик совместимости приложений или если 64-разрядный поставщик может предоставлять данные обоим клиентам. |
В следующих разделах рассматриваются шаги, необходимые для записи различных типов поставщиков:
- Создание провайдера экземпляров
- Написание метода-поставщика
- написание поставщика событий
- Написание поставщика обработчиков событий
- Разработка поставщика классов
- Создание Поставщика свойств
- превращение поставщика экземпляров в High-Performance поставщика