Compartilhar via


Interface do medidor de energia

A partir do Windows 10, os drivers podem implementar a EMI (Interface de Medição de Energia) para expor dados de consumo de energia aos clientes. Essa interface consiste em um conjunto de IOCTLs padronizados para que os clientes obtenham dados de energia, bem como dados sobre o hardware de medição e o hardware que está sendo medido.

Medidores de energia a bordo periodicamente medem a tensão e a corrente em um trilho, calculam um produto de energia e integram a energia total consumida ao longo do tempo. Esses medidores são distintos do conceito de Interface do Medidor de Energia existente porque os medidores de energia têm um intervalo de média global. Os medidores de energia permitem que vários consumidores determinem a energia média em intervalos diferentes de acordo com suas necessidades, retornando o consumo total de energia até o presente.

A interface EMI fornece o canal para que os dados de energia sejam consumidos por aplicativos e serviços cliente interessados. Os clientes calculam a energia consumida desde a última consulta subtraindo os valores anteriores dos valores mais recentes e, opcionalmente, convertem em potência média por divisão simples.

Descobrindo dispositivos que implementam a EMI

Os clientes descobrem dispositivos que dão suporte à EMI por meio de chamadas para SetupDiEnumDeviceInterfaces e SetupDiGetDeviceInterfaceDetail. Uma instância de uma interface de dispositivo EMI é criada para cada dispositivo de medição de energia compatível com EMI e está presente no sistema.

O GUID para a interface do dispositivo EMI é {45BD8344-7ED6-49cf-A440-C276C933B053}, conforme definido em emi.h. Como alternativa, o código pode usar GUID_DEVICE_ENERGY_METER para especificar esse GUID.

Usando a interface EMI

O código do cliente normalmente interage com a EMI usando o seguinte processo:

  1. Chame IOCTL_EMI_GET_VERSION e verifique a versão da interface EMI compatível com o dispositivo no valor de EMI_VERSION retornado. Em Windows 10, os dispositivos podem dar suporte a EMI_VERSION_V1. No Windows 10 versão 1809, os dispositivos também podem dar suporte a EMI_VERSION_V2. Versões futuras do sistema operacional podem introduzir versões posteriores.

  2. Chame IOCTL_EMI_GET_METADATA_SIZE para obter o tamanho dos metadados da EMI.

  3. Aloque um buffer do tamanho de metadados de EMI necessário e chame IOCTL_EMI_GET_METADATA. Verifique se o EMI_MEASUREMENT_UNIT retornado é EmiMeasurementUnitPicowattHours. Versões após Windows 10 podem definir tipos de unidade adicionais.

  4. Para medir o consumo total de energia, chame IOCTL_EMI_GET_MEASUREMENT. O valor AbsoluteEnergy na estrutura de EMI_CHANNEL_MEASUREMENT_DATA retornada é a energia acumulada total em picowatt-hours com algum ponto zero arbitrário. Em geral, você precisa comparar amostras em dois momentos diferentes e subtrair os valores de energia para consumo de energia durante esse intervalo.

  5. Para medir o consumo médio de energia, chame IOCTL_EMI_GET_MEASUREMENT no início e no final do intervalo desejado. Subtraia os valores AbsoluteEnergy e AbsoluteTime da estrutura EMI_CHANNEL_MEASUREMENT_DATA retornada pelo último exemplo dos da amostra anterior.

Para obter mais informações, consulte estes tópicos.

IOCTLs de EMI – esta seção descreve os IOCTLs (códigos de controle de E/S) compatíveis com a EMI (Interface de Medição de Energia).

Enumerações e estruturas EMI – esta seção descreve as enumerações e estruturas compatíveis com a EMI (Interface de Medição de Energia).