次の方法で共有


IOCTL_EMI_GET_MEASUREMENT IOCTL (emi.h)

IOCTL_EMI_GET_MEASUREMENT制御コードは、現在のエネルギー測定と測定が取得された時刻を取得します。

[入力バッファー]

[なし] :

入力バッファーの長さ

[なし] :

出力バッファー

AssociatedIrp.SystemBuffer メンバーは、プロバイダー デバイス ドライバーからの測定データを含む呼び出し元によって割り当てられたバッファーのアドレスを指定します。

出力バッファーの長さ

出力バッファーの長さは 、EMI_MEASUREMENT_DATA_V1 のサイズであるか、チャネル数を乗算 EMI_MEASUREMENT_DATA_V2 必要があります。 これは Parameters.DeviceIoControl.OutputBufferLength メンバーで指定されます。

注釈

EMI バージョン 1 と 2 の場合、各チャネルから報告される EMI 測定データは、各要求でチャネルによって指定された単位に蓄積および変換する必要があります。これは、デバイスの EMI インターフェイスをシステム全体で共有する必要があるため、カウンターのサンプリングと蓄積の頻度は、各コンシューマー要求の頻度とドライバーの実装によって異なります。

EMI バージョン 2 の場合、同じデバイスによって複数のチャネルが各要求で一度にサンプリングされるため、呼び出し元はEMI_METADATA_V2 ChannelCount を使用してチャネルを走査する必要があります。次に例を示します。


  status = DeviceIoControl(DeviceHandle,
                           IOCTL_EMI_GET_MEASUREMENT,
                           NULL,
                           NULL,
                           Data,
                           ChannelDataSize,
                           BytesReturned,
                           NULL);

  EMI_CHANNEL_V2* Channel = &MetaData->Channels[0];
  for (int i = 0 ; i < MetaData->ChannelCount && status ; i++) {
      
      //
      // Get energy measurement for each energy counter.
      //

      AbsoluteEnergy = Measurement->ChannelData[i].AbsoluteEnergy;
      AbsoluteTime = Measurement->ChannelData[i].AbsoluteTime;
  }

要件

要件
サポートされている最小のクライアント Windows 10 以降で使用できます。
Header emi.h (Emi.h を含む)

こちらもご覧ください

EMI_METADATA_V2
EMI_MEASUREMENT_DATA_V2
エネルギーメータリングインタフェース