Freigeben über


Energiezählerschnittstelle

Ab Windows 10 können Treiber die Energy Metering Interface (EMI) implementieren, um Energieverbrauchsdaten für Clients verfügbar zu machen. Diese Schnittstelle besteht aus einer Reihe standardisierter IOCTLs für Clients, um Energiedaten sowie Daten über die Messhardware und die zu messende Hardware abzurufen.

On-Board-Energiezähler messen regelmäßig Spannung und Strom auf einer Schiene, berechnen ein Energieprodukt und integrieren die gesamt verbrauchte Energie im Laufe der Zeit. Diese Zähler unterscheiden sich vom bestehenden Konzept der Power Meter-Schnittstelle , da Stromzähler ein globales Mittelwertintervall aufweisen. Energiezähler ermöglichen es mehreren Verbrauchern, den durchschnittlichen Strom über verschiedene Intervalle je nach Bedarf zu bestimmen, indem sie den gesamtenergieverbrauch bis heute zurückgeben.

Die EMI-Schnittstelle bietet den Kanal für Energiedaten, die von interessierten Clientanwendungen und -diensten genutzt werden können. Clients berechnen die seit ihrer letzten Abfrage verbrauchte Energie, indem sie die vorherigen Werte von den neuesten Werten subtrahieren und optional durch einfache Aufteilung in die durchschnittliche Leistung konvertieren.

Ermitteln von Geräten, die EMI implementieren

Clients ermitteln Geräte, die das EMI unterstützen, durch Aufrufe von SetupDiEnumDeviceInterfaces und SetupDiGetDeviceInterfaceDetail. Eine instance einer EMI-Geräteschnittstelle wird für jedes Energiemessungsgerät erstellt, das EMI-konform ist und im System vorhanden ist.

Die GUID für die EMI-Geräteschnittstelle ist {45BD8344-7ED6-49cf-A440-C276C933B053}, wie in emi.h definiert. Code kann alternativ GUID_DEVICE_ENERGY_METER verwenden, um diese GUID anzugeben.

Verwenden der EMI-Schnittstelle

Clientcode interagiert normalerweise mit dem EMI mithilfe des folgenden Prozesses:

  1. Rufen Sie IOCTL_EMI_GET_VERSION auf, und überprüfen Sie die vom Gerät unterstützte EMI-Schnittstellenversion im zurückgegebenen EMI_VERSION Wert. In Windows 10 können Geräte EMI_VERSION_V1 unterstützen. In Windows 10 Version 1809 können Geräte auch EMI_VERSION_V2 unterstützen. Zukünftige Betriebssystemversionen können höhere Versionen einführen.

  2. Rufen Sie IOCTL_EMI_GET_METADATA_SIZE auf, um die Größe der EMI-Metadaten abzurufen.

  3. Ordnen Sie einen Puffer der erforderlichen EMI-Metadatengröße zu, und rufen Sie IOCTL_EMI_GET_METADATA auf. Vergewissern Sie sich, dass der zurückgegebene EMI_MEASUREMENT_UNIT EmiMeasurementUnitPicowattHours ist. Releases nach Windows 10 können zusätzliche Einheitentypen definieren.

  4. Um den Gesamtenergieverbrauch zu messen, rufen Sie IOCTL_EMI_GET_MEASUREMENT auf. Der AbsoluteEnergy-Wert in der zurückgegebenen EMI_CHANNEL_MEASUREMENT_DATA Struktur ist die gesamt akkumulierte Energie in Picowattstunden mit einem beliebigen Nullpunkt. Im Allgemeinen müssen Sie Proben zu zwei verschiedenen Zeiten vergleichen und die Energiewerte für den Energieverbrauch in diesem Intervall subtrahieren.

  5. Um den durchschnittlichen Energieverbrauch zu messen, rufen Sie IOCTL_EMI_GET_MEASUREMENT am Anfang und Ende des gewünschten Intervalls auf. Subtrahieren Sie die Werte AbsoluteEnergy und AbsoluteTime der EMI_CHANNEL_MEASUREMENT_DATA Struktur , die von der letztgenannten Stichprobe zurückgegeben werden, von denen der vorherigen Stichprobe.

Weitere Informationen finden Sie in diesen Themen.

EMI IOCTLs : In diesem Abschnitt werden die E/A-Steuercodes (IOCTLs) beschrieben, die von der Energiemessschnittstelle (EMI) unterstützt werden.

EMI-Enumerationen und -Strukturen : In diesem Abschnitt werden die Enumerationen und Strukturen beschrieben, die von der Energiemessungsschnittstelle (EMI) unterstützt werden.