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 开始可用。
标头 emi.h (包括 Emi.h)

另请参阅

EMI_METADATA_V2
EMI_MEASUREMENT_DATA_V2
能量计量接口