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


Написание поставщика классов

Поставщик классов управляет классом или рядом классов для WMI. Поставщик классов может быть поставщиком типа push или типа pull; то есть, он может хранить собственные данные или позволить WMI хранить данные для него в службе управления Windows. Хотя поставщик классов установлен на определенном компьютере, он может изменять определения классов во всем предприятии. Поэтому большинство разработчиков часто не создают поставщиков классов.

Перед созданием поставщика классов убедитесь, что поддерживаемые классы действительно должны быть созданы динамически. В большинстве случаев список классов медленно меняется и ограничен. Если это так, вам не нужно создавать поставщика классов. Вместо этого можно поместить определения классов в репозиторий WMI с помощью API WMI или MOF-файла.

В следующей процедуре описывается реализация поставщика классов.

Реализация поставщика классов

  1. Определите, является ли ваш поставщик поставщиком push-уведомлений или pull-запросов.

    Поставщик pull динамически предоставляет данные в ответ на запрос приложения, а push-поставщики хранят свои данные единожды в репозитории WMI. Дополнительные сведения см. в разделе определения состояния Push или Pull.

  2. Разработка и регистрация поставщика классов в WMI.

    Поставщики классов регистрируются в WMI путем создания экземпляра __Win32Provider и экземпляра __ClassProviderRegistration. Дополнительные сведения см. в разделе Регистрация поставщика классов.

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

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

    Заметка

    Поставщикам классов настоятельно рекомендуется использовать многопоточную модель "Both".

     

  4. Добавьте дополнительный код, необходимый для вашего поставщика.

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

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

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

    Интерфейс IWbemServices является основным интерфейсом для поставщика класса извлечения. Для получения дополнительной информации см. Реализация основного интерфейса для поставщика классов.

  6. Замените существующего провайдера вашим новым кодом.

    Этот шаг не требуется выполнять, если у вас нет уже существующего поставщика для копирования. Для получения дополнительной информации см. обновление поставщика.