Как использовать методы CIM, которые не реализованы WMI?

Проект, над которым я сейчас работаю, связан с большим количеством аппаратных средств. Таким образом, я использую много кода, связанного с WMI. Я заметил на нескольких страницах MSDN, таких как Win32_Fan, что есть некоторые методы CIM, которые не реализованы и поэтому не могут быть использованы. Например, я хочу использовать метод CIM_Fan SetSpeed. Страница MSDN этого метода говорит следующее:

Этот метод в настоящее время не реализован WMI. Чтобы использовать этот метод, вы должны реализовать его у своего провайдера.

Эта документация получена из описаний классов CIM, опубликованных DMTF. Возможно, Microsoft внесла изменения для исправления незначительных ошибок, соответствия стандартам документации Microsoft SDK или предоставления дополнительной информации.

У меня есть ряд вопросов относительно этой информации:

  • Прежде всего, я не думаю, что я вполне понимаю, что они имеют в виду, говоря, что я должен реализовать метод в своем собственном поставщике. Нужно ли мне на самом деле изменять скрипты, которые запускают мой компьютер?

  • Во-вторых, я не понимаю, как использовать метод CIM, с точки зрения синтаксиса.

Если у кого-то есть идеи относительно ответа на любой из них, это будет высоко оценено.

1 ответ

Вы можете использовать: Открыть Hardware Monitor, который предоставляет все необходимые вам классы. Это также предлагает намного больше информации, не доступной из коробки.

Для работы с WMI вы также можете использовать библиотеку ORMi. Крайне прост в использовании, например, это приносит информацию о процессорах:

var processors = helper.Query("SELECT * FROM Win32_Processor");

Или с напечатанными объектами:

[WMIClass("Win32_Processor")]
public class Processor
{
    [WMIIgnore]
    public string NonRequiredProp { get; set; }

    public string Name { get; set; }

    [WMIProperty("NumberOfCores")]
    public int Cores { get; set; }

    public string Description { get; set; }
}

И тогда запрос:

List<Processor> procesors = helper.Query<Processor>().ToList();
Другие вопросы по тегам