Интерфейс счетчика энергии
Начиная с 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 с помощью следующего процесса:
Вызовите IOCTL_EMI_GET_VERSION и проверьте версию интерфейса EMI, поддерживаемую устройством, в возвращенном EMI_VERSION значении. В Windows 10 устройства могут поддерживать EMI_VERSION_V1. В Windows 10 версии 1809 устройства также могут поддерживать EMI_VERSION_V2. В будущих выпусках операционной системы могут быть представлены более поздние версии.
Вызовите IOCTL_EMI_GET_METADATA_SIZE, чтобы получить размер метаданных EMI.
Выделите буфер требуемого размера метаданных EMI и вызовите IOCTL_EMI_GET_METADATA. Убедитесь, что возвращенное EMI_MEASUREMENT_UNIT — EmiMeasurementUnitPicowattHours. Выпуски после Windows 10 могут определять дополнительные типы единиц.
Чтобы измерить общее потребление энергии, вызовите IOCTL_EMI_GET_MEASUREMENT. Значение Absolute Energy в возвращаемой EMI_CHANNEL_MEASUREMENT_DATA структуре представляет собой общую накопленную энергию в пиковатт-часы с некоторой произвольной нулевой точкой. Как правило, необходимо сравнить выборки в два разных времени и вычесть значения энергии для потребления энергии за этот интервал.
Чтобы измерить среднее энергопотребление, вызовите IOCTL_EMI_GET_MEASUREMENT в начале и конце нужного интервала. Вычитает значения AbsoluteИстограммы и AbsoluteTime структуры EMI_CHANNEL_MEASUREMENT_DATA , возвращаемой последней выборкой, из значений предыдущей выборки.
Дополнительные сведения см. в этих разделах.
IoCTLs EMI . В этом разделе описываются коды управления вводом-выводом (IOCTL), поддерживаемые интерфейсом измерения энергии (EMI).
Перечисления и структуры EMI . В этом разделе описываются перечисления и структуры, поддерживаемые интерфейсом измерения энергии (EMI).