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


Интерфейс счетчика энергии

Начиная с Windows 10, драйверы могут реализовать интерфейс учета энергии (EMI) для предоставления данных о потреблении энергии клиентам. Этот интерфейс состоит из набора стандартизированных списков IOCTL для получения клиентами данных об энергии, а также данных об оборудовании для измерения и измеряемом оборудовании.

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

Интерфейс EMI предоставляет канал для потребления энергетических данных заинтересованными клиентскими приложениями и службами. Клиенты вычисляют энергию, потребленную с момента последнего запроса, вычитая предыдущие значения из последних значений и при необходимости преобразуя ее в среднюю мощность путем простого деления.

Обнаружение устройств, реализующих EMI

Клиенты обнаруживают устройства, поддерживающие EMI, с помощью вызовов SetupDiEnumDeviceInterfaces и SetupDiGetDeviceInterfaceDetail. Один экземпляр интерфейса устройства EMI создается для каждого устройства учета энергии, совместимого с EMI и присутствующего в системе.

Guid для интерфейса устройства EMI — {45BD8344-7ED6-49cf-A440-C276C933B053}, как определено в emi.h. Код также может использовать GUID_DEVICE_ENERGY_METER для указания этого GUID.

Использование интерфейса EMI

Клиентский код обычно взаимодействует с EMI с помощью следующего процесса:

  1. Вызовите IOCTL_EMI_GET_VERSION и проверьте версию интерфейса EMI, поддерживаемую устройством, в возвращенном EMI_VERSION значении. В Windows 10 устройства могут поддерживать EMI_VERSION_V1. В Windows 10 версии 1809 устройства также могут поддерживать EMI_VERSION_V2. В будущих выпусках операционной системы могут быть представлены более поздние версии.

  2. Вызовите IOCTL_EMI_GET_METADATA_SIZE, чтобы получить размер метаданных EMI.

  3. Выделите буфер требуемого размера метаданных EMI и вызовите IOCTL_EMI_GET_METADATA. Убедитесь, что возвращенное EMI_MEASUREMENT_UNIT — EmiMeasurementUnitPicowattHours. Выпуски после Windows 10 могут определять дополнительные типы единиц.

  4. Чтобы измерить общее потребление энергии, вызовите IOCTL_EMI_GET_MEASUREMENT. Значение Absolute Energy в возвращаемой EMI_CHANNEL_MEASUREMENT_DATA структуре представляет собой общую накопленную энергию в пиковатт-часы с некоторой произвольной нулевой точкой. Как правило, необходимо сравнить выборки в два разных времени и вычесть значения энергии для потребления энергии за этот интервал.

  5. Чтобы измерить среднее энергопотребление, вызовите IOCTL_EMI_GET_MEASUREMENT в начале и конце нужного интервала. Вычитает значения AbsoluteИстограммы и AbsoluteTime структуры EMI_CHANNEL_MEASUREMENT_DATA , возвращаемой последней выборкой, из значений предыдущей выборки.

Дополнительные сведения см. в этих разделах.

IoCTLs EMI . В этом разделе описываются коды управления вводом-выводом (IOCTL), поддерживаемые интерфейсом измерения энергии (EMI).

Перечисления и структуры EMI . В этом разделе описываются перечисления и структуры, поддерживаемые интерфейсом измерения энергии (EMI).