Partager via


IOCTL_EMI_GET_MEASUREMENT IOCTL (emi.h)

Le code de contrôle IOCTL_EMI_GET_MEASUREMENT récupère la mesure d’énergie actuelle et l’heure à laquelle la mesure a été effectuée.

Mémoire tampon d'entrée

Aucun.

Longueur de la mémoire tampon d’entrée

Aucun.

Mémoire tampon de sortie

Le membre AssociatedIrp.SystemBuffer spécifie l’adresse d’une mémoire tampon allouée à l’appelant qui contient les données de mesure du pilote de périphérique du fournisseur.

Longueur de la mémoire tampon de sortie

La longueur de la mémoire tampon de sortie doit être la taille de EMI_MEASUREMENT_DATA_V1 ou EMI_MEASUREMENT_DATA_V2 multiplier par le nombre de canaux, elle est spécifiée dans le membre Parameters.DeviceIoControl.OutputBufferLength .

Remarques

Pour EMI version 1 et 2, les données de mesure EMI signalées à partir de chaque canal doivent être accumulées et traduites en l’unité spécifiée par le canal sur chaque demande, car l’interface EMI de n’importe quel appareil doit être partagée entre le système. Par conséquent, la fréquence d’échantillonnage et d’accumulation des compteurs dépend de la fréquence à laquelle chacune de ses demandes de consommateur et de l’implémentation du pilote.

Pour l’EMI version 2, plusieurs canaux sont exposés par le même appareil doivent être échantillonné à la fois sur chaque demande. Par conséquent, l’appelant doit utiliser ChannelCount dans le EMI_METADATA_V2 pour parcourir les canaux, par exemple :


  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;
  }

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 10.
En-tête emi.h (inclure Emi.h)

Voir aussi

EMI_METADATA_V2
EMI_MEASUREMENT_DATA_V2
Interface de mesure de l’énergie