次の方法で共有


エネルギー メーター インターフェイス

Windows 10 以降では、ドライバーはエネルギー測定インターフェイス (EMI) を実装して、エネルギー消費量データをクライアントに公開できます。 このインターフェイスは、クライアントがエネルギー データを取得するための標準化された IOCTL のセットと、計測ハードウェアと計測されているハードウェアに関するデータで構成されます。

オンボードのエネルギー メーターは、定期的にレールの電圧と電流を測定し、電力製品を計算し、時間の経過に伴って消費される総エネルギーを統合します。 これらのメーターは、電力メーターの平均間隔がグローバルであるため、既存の電力メーター インターフェイスの概念とは異なります。 エネルギー メーターを使用すると、複数の消費者が、現在までの総エネルギー消費量を返すことによって、ニーズに応じて異なる間隔で平均電力を決定できます。

EMI インターフェイスは、対象のクライアント アプリケーションおよびサービスによって消費されるエネルギー データの導管を提供します。 クライアントは、前回のクエリ以降に消費されたエネルギーを、最新の値から前の値を減算して計算し、必要に応じて単純除算によって平均累乗に変換します。

EMI を実装するデバイスの検出

クライアントは、SetupDiEnumDeviceInterfacesSetupDiGetDeviceInterfaceDetail の呼び出しを通じて、EMI をサポートするデバイスを検出します。 EMI に準拠し、システムに存在するエネルギー測定デバイスごとに、EMI デバイス インターフェイスの 1 つのインスタンスが作成されます。

EMI デバイス インターフェイスの GUID は、emi.h で定義されている {45BD8344-7ED6-49cf-A440-C276C933B053} です。 コードでは、GUID_DEVICE_ENERGY_METER を使用してこの GUID を指定することもできます。

EMI インターフェイスの使用

通常、クライアント コードは次のプロセスを使用して EMI と対話します :

  1. IOCTL_EMI_GET_VERSION を呼び出し、返された EMI_VERSION 値でデバイスでサポートされている EMI インターフェイスのバージョンを確認します。 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 を呼び出します。 返された EMI_CHANNEL_MEASUREMENT_DATA 構造体の AbsoluteEnergy 値は、任意のゼロポイントを持つ合計累積エネルギー (ピコワット時) です。 一般に、サンプルを 2 つの異なる時間で比較し、その間隔でエネルギー消費量のエネルギー値を減算する必要があります。

  5. 平均消費電力を測定するには、目的の間隔の最初と最後にIOCTL_EMI_GET_MEASUREMENT を呼び出します。 後者のサンプルによって返される EMI_CHANNEL_MEASUREMENT_DATA 構造体の AbsoluteEnergy と AbsoluteTime の値を、前のサンプルの値から減算します。

詳細については、これらのトピックをご参照ください。

EMI IOCTL - このセクションでは、エネルギー測定インターフェイス (EMI) でサポートされる I/O 制御コード (IOCTL) について説明します。

EMI 列挙体と構造 - このセクションでは、エネルギー測定インターフェイス (EMI) でサポートされる列挙体と構造体について説明します。