IRP_MN_QUERY_PNP_DEVICE_STATE
Les pilotes de fonction, de filtre et de bus peuvent gérer cette demande.
Valeur47
0x14
Code majeur
Date d’envoi
Le gestionnaire PnP envoie cette IRP après que les pilotes d’un appareil ont retourné la réussite de la demande IRP_MN_START_DEVICE envoyée lors du premier démarrage d’un appareil. Cette IRP n’est pas envoyée sur un démarrage après un arrêt pour le rééquilibrage des ressources. Le gestionnaire PnP envoie également cette IRP lorsqu’un pilote de l’appareil appelle IoInvalidateDeviceState.
Le gestionnaire PnP envoie cette IRP à IRQL PASSIVE_LEVEL dans le contexte d’un thread arbitraire.
Paramètres d’entrée
Aucun
Paramètres de sortie
Retourné dans le bloc status d’E/S.
Bloc d’état E/S
Un pilote définit Irp-IoStatus.Status> sur STATUS_SUCCESS ou sur un status d’erreur approprié, comme STATUS_UNSUCCESSFUL.
En cas de réussite, un pilote définit Irp-IoStatus.Information> sur un masque de bits PNP_DEVICE_STATE.
Si un pilote de fonction ou de filtre ne gère pas cette IRP, il appelle IoSkipCurrentIrpStackLocation, ne définit pas de routine IoCompletion et transmet l’IRP au pilote suivant. Un tel pilote ne doit pas modifier Irp-IoStatus> et ne doit pas terminer l’IRP.
Si un pilote de bus ne gère pas cette IRP, il laisse Irp-IoStatus.Status> tel quel et termine l’IRP.
Opération
Cette IRP est d’abord gérée par le pilote en haut de la pile de périphériques, puis par chaque pilote inférieur suivant dans la pile.
Un pilote gère cette IRP s’il a des informations sur l’état PnP d’un appareil. Un pilote peut définir ou effacer les indicateurs dans le masque de bits PNP_DEVICE_STATE. Si un autre pilote a défini une PNP_DEVICE_STATE dans Irp-IoStatus.Information>, un pilote doit prendre soin de modifier les indicateurs dans ce masque de bits plutôt que de remplacer l’ensemble de la structure.
Consultez Plug-and-Play pour connaître les règles générales de gestion Plug-and-Play irps mineurs.
Envoi de cette IRP
Réservé pour le système. Les pilotes ne doivent pas envoyer cette IRP.
Spécifications
En-tête |
Wdm.h (inclure Wdm.h, Ntddk.h ou Ntifs.h) |