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
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 .
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) |