Partager via


Interface de compteur d’énergie

À partir de Windows 10, les conducteurs peuvent implémenter l’interface de mesure d’énergie (EMI) pour exposer les données de consommation d’énergie aux clients. Cette interface se compose d’un ensemble de listes IOCTL standardisées permettant aux clients d’obtenir des données énergétiques, ainsi que des données sur le matériel de mesure et le matériel mesuré.

Les compteurs d’énergie embarqués mesurent périodiquement la tension et le courant sur un rail, calculent un produit électrique et intègrent l’énergie totale consommée au fil du temps. Ces compteurs sont distincts du concept existant de l’interface power meter, car les compteurs de puissance ont un intervalle de moyenne globale. Les compteurs d’énergie permettent à plusieurs consommateurs de déterminer la puissance moyenne sur différents intervalles en fonction de leurs besoins en retournant la consommation totale d’énergie jusqu’à aujourd’hui.

L’interface EMI fournit le conduit pour les données énergétiques à consommer par les applications et services clients intéressés. Les clients calculent l’énergie consommée depuis leur dernière requête en soustrayant les valeurs précédentes des valeurs les plus récentes, et éventuellement convertir en puissance moyenne par division simple.

Découverte d’appareils qui implémentent EMI

Les clients découvrent les appareils qui prennent en charge l’EMI par le biais d’appels à SetupDiEnumDeviceInterfaces et SetupDiGetDeviceInterfaceDetail. Une instance d’une interface d’appareil EMI est créée pour chaque appareil de mesure de l’énergie conforme à l’EMI et présent dans le système.

Le GUID de l’interface de périphérique EMI est {45BD8344-7ED6-49cf-A440-C276C933B053}, tel que défini dans emi.h. Le code peut également utiliser GUID_DEVICE_ENERGY_METER pour spécifier ce GUID.

Utilisation de l’interface EMI

Le code client interagit généralement avec l’EMI à l’aide du processus suivant :

  1. Appelez IOCTL_EMI_GET_VERSION et vérifiez la version de l’interface EMI prise en charge par l’appareil dans la valeur de EMI_VERSION retournée. Dans Windows 10, les appareils peuvent prendre en charge EMI_VERSION_V1. Dans Windows 10 version 1809, les appareils peuvent également prendre en charge EMI_VERSION_V2. Les versions ultérieures du système d’exploitation peuvent introduire des versions ultérieures.

  2. Appelez IOCTL_EMI_GET_METADATA_SIZE pour obtenir la taille des métadonnées EMI.

  3. Allouez une mémoire tampon de la taille de métadonnées EMI requise et appelez IOCTL_EMI_GET_METADATA. Vérifiez que le EMI_MEASUREMENT_UNIT retourné est EmiMeasurementUnitPicowattHours. Les mises en production après Windows 10 peuvent définir des types d’unités supplémentaires.

  4. Pour mesurer la consommation totale d’énergie, appelez IOCTL_EMI_GET_MEASUREMENT. La valeur AbsoluteEnergy dans la structure de EMI_CHANNEL_MEASUREMENT_DATA retournée correspond au total de l’énergie accumulée en picowatt-heures avec un point zéro arbitraire. En général, vous devez comparer les échantillons à deux moments différents et soustraire les valeurs énergétiques pour la consommation d’énergie au cours de cet intervalle.

  5. Pour mesurer la consommation moyenne d’énergie, appelez IOCTL_EMI_GET_MEASUREMENT au début et à la fin de l’intervalle souhaité. Soustrayez les valeurs AbsoluteEnergy et AbsoluteTime de la structure EMI_CHANNEL_MEASUREMENT_DATA retournées par ce dernier exemple de celles de l’exemple précédent.

Pour plus d’informations, consultez ces rubriques.

IOCTL EMI : cette section décrit les codes de contrôle d’E/S (IOCTL) pris en charge par l’interface de mesure d’énergie (EMI).

Énumérations et structures EMI : cette section décrit les énumérations et les structures prises en charge par l’interface de mesure d’énergie (EMI).