Partager via


IOCTL_PMI_REGISTER_EVENT_NOTIFY IOCTL (pmi.h)

La demande IOCTL_PMI_REGISTER_EVENT_NOTIFY enregistre l’initiateur IOCTL pour être averti d’un événement de compteur de puissance. Lorsque l’événement se produit, l’interface de compteur de puissance (PMI) termine la requête IOCTL et retourne des informations sur l’événement.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Le membre AssociatedIrp.SystemBuffer du paquet de demandes d’E/S (IRP) pointe vers une mémoire tampon d’entrée allouée par l’initiateur qui contient une structure PMI_EVENT .

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

Le membre Parameters.DeviceIoControl.InputBufferLength de l’emplacement actuel de la pile d’E/S de l’IRP (IO_STACK_LOCATION) est défini sur la taille en octets de la mémoire tampon d’entrée pointée par le membre AssociatedIrp.SystemBuffer . Cette taille doit être supérieure ou égale à sizeof(PMI_EVENT) pour que la demande échoue avec une erreur status de STATUS_BUFFER_TOO_SMALL.

Mémoire tampon de sortie

Aucun.

Longueur de la mémoire tampon de sortie

Aucun.

Bloc d’état

Le membre Information est défini sur la taille, en octets, d’une structure PMI_EVENT .

Le membre Status est défini sur l’une des valeurs suivantes :

STATUS_BUFFER_TOO_SMALL

Le membre Parameters.DeviceIoControl.OutputBufferLength de l’IRP est inférieur à la taille, en octets, d’une structure PMI_EVENT .

STATUS_PENDING

Le pilote WDM qui prend en charge l’interface PMI a placé la requête IOCTL dans une file d’attente et la terminera une fois qu’un événement PMI s’est produit.

STATUS_SUCCESS

Le pilote WDM qui prend en charge l’interface PMI a effectué la requête IOCTL avec succès.

Remarques

LE SERVICE DMI crée une file d’attente de notification d’événements pour chaque initiateur qui ouvre l’appareil instance pour un compteur de puissance à l’aide de la fonction CreateFile. Une file d’attente distincte est créée pour la connexion de chaque appelant à un appareil instance. Les points suivants s’appliquent à la file d’attente de notification d’événements :

  • Lorsque LE SERVICE d’analyse des événements crée la file d’attente de notification d’événements, la file d’attente est vide. Une fois la file d’attente créée, le SERVICE DMI envoie des événements à l’appelant une fois que l’appelant s’est inscrit pour la notification d’événement à l’aide de la demande IOCTL_PMI_REGISTER_EVENT_NOTIFY .
  • Si la file d’attente des notifications d’événements est vide lorsque l’appelant s’inscrit, la demande IOCTL_PMI_REGISTER_EVENT_NOTIFY reste en attente jusqu’à ce qu’un événement se produise ou que l’appareil instance connexion soit interrompue via la fonction CloseFile.
  • Une fois la file d’attente de notification d’événements créée, la file d’attente contient des événements non renvoyés pour l’appelant. Cela empêche les appelants de manquer des événements pendant l’intervalle entre le moment où le pilote traite un événement et où l’appelant s’inscrit pour un autre. S’il existe des événements dans la file d’attente de l’appelant, ils sont envoyés immédiatement après l’inscription de l’appelant à l’aide d’une demande de IOCTL_PMI_REGISTER_EVENT_NOTIFY .
Quand LE SERVICE d’alimentation envoie un événement de mesure de puissance à l’appelant, il termine la demande IOCTL_PMI_REGISTER_EVENT_NOTIFY . Les données qui décrivent l’événement sont contenues dans la structure PMI_EVENT dans la mémoire tampon de sortie référencée par le membre MdlAddress de l’IRP. Le membre EventType de cette structure contient des informations sur le type d’événement du compteur de puissance. Par exemple, si EventType est défini sur PmiConfigurationChangedEvent, la configuration du compteur d’alimentation a changé. Dans ce cas, l’appelant peut interroger la nouvelle configuration du compteur d’alimentation à l’aide d’une demande de IOCTL_PMI_GET_CONFIGURATION .

Pour plus d’informations sur les fonctions CreateFile et CloseFile , reportez-vous à la documentation du Kit de développement logiciel (SDK) Windows.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 7, Windows Server 2008 R2 et versions ultérieures des systèmes d’exploitation Windows.
En-tête pmi.h (inclure Pmi.h)

Voir aussi

IOCTL_PMI_GET_CONFIGURATION

IO_STACK_LOCATION

IRP

PMI_EVENT