다음을 통해 공유


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
에너지 계량 인터페이스