다음을 통해 공유


에너지 미터 인터페이스

Windows 10 시작하여 드라이버는 EMI(에너지 계량 인터페이스)를 구현하여 에너지 소비 데이터를 클라이언트에 노출할 수 있습니다. 이 인터페이스는 클라이언트가 에너지 데이터를 가져올 수 있도록 표준화된 IOCTL 집합과 계량 하드웨어 및 계량되는 하드웨어에 대한 데이터로 구성됩니다.

온보드 에너지 미터는 레일의 전압과 전류를 주기적으로 측정하고, 전력 제품을 계산하고, 시간이 지남에 따라 소비되는 총 에너지를 통합합니다. 이러한 미터는 전 세계 평균 간격을 가지므로 기존 파워 미터 인터페이스 개념과 다릅니다. 에너지 미터를 사용하면 여러 소비자가 현재까지 총 에너지 소비량을 반환하여 필요에 따라 서로 다른 간격으로 평균 전력을 결정할 수 있습니다.

EMI 인터페이스는 관심 있는 클라이언트 애플리케이션 및 서비스에서 에너지 데이터를 사용할 수 있는 통로를 제공합니다. 클라이언트는 최신 값에서 이전 값을 빼서 마지막 쿼리 이후 사용된 에너지를 계산하고 필요에 따라 단순 분할을 통해 평균 전력으로 변환합니다.

EMI를 구현하는 디바이스 검색

클라이언트는 SetupDiEnumDeviceInterfacesSetupDiGetDeviceInterfaceDetail 호출을 통해 EMI를 지원하는 디바이스를 검색합니다. EMI 디바이스 인터페이스의 한 instance EMI 규격이고 시스템에 있는 각 에너지 계량 디바이스에 대해 만들어집니다.

emi.h에 정의된 대로 EMI 디바이스 인터페이스의 GUID는 {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 값은 피코와트 시의 총 누적 에너지이며 임의로 0포인트입니다. 일반적으로 샘플을 두 번 비교하고 해당 간격 동안 에너지 소비에 대한 에너지 값을 빼야 합니다.

  5. 평균 전력 소비량을 측정하려면 원하는 간격의 시작과 끝에 IOCTL_EMI_GET_MEASUREMENT 호출합니다. 이전 샘플의 예제에서 반환된 EMI_CHANNEL_MEASUREMENT_DATA 구조 체의 AbsoluteEnergy 및 AbsoluteTime 값을 뺍니다.

자세한 내용은 이러한 topics 참조하세요.

EMI IOCTL - 이 섹션에서는 EMI(에너지 측정 인터페이스)에서 지원하는 IOCTL(I/O 제어 코드)에 대해 설명합니다.

EMI 열거형 및 구조 - 이 섹션에서는 EMI(에너지 측정 인터페이스)에서 지원하는 열거형 및 구조체에 대해 설명합니다.