IRP_MN_QUERY_RESOURCE_REQUIREMENTS

Le gestionnaire PnP utilise cette IRP pour obtenir la liste des besoins en ressources d’un appareil.

Les pilotes de bus doivent gérer cette demande pour leurs appareils enfants qui nécessitent des ressources matérielles. Les pilotes de filtre de bus peuvent gérer cette requête. Les pilotes de fonction et de filtre ne gèrent pas cette IRP.

Valeur

0x0B

Code majeur

IRP_MJ_PNP

Date d’envoi

Le gestionnaire PnP envoie cette IRP lorsqu’un appareil est énuméré, avant d’allouer des ressources à un appareil et lorsqu’un pilote signale que les besoins en ressources de son appareil ont changé.

Le gestionnaire PnP envoie cette IRP à IRQL PASSIVE_LEVEL dans un contexte de thread arbitraire.

Paramètres d’entrée

Aucun

Paramètres de sortie

Retourné dans le bloc d’E/S status.

Bloc d’état E/S

Un pilote qui gère cette IRP définit Irp-IoStatus.Status> sur STATUS_SUCCESS ou une status d’erreur appropriée.

En cas de réussite, un pilote définit Irp-IoStatus.Information> sur un pointeur vers un IO_RESOURCE_REQUIREMENTS_LIST qui contient les informations demandées. En cas d’erreur, le pilote définit Irp-IoStatus.Information> sur zéro.

Opération

Si un pilote de bus retourne une liste de besoins en ressources en réponse à cette IRP, il alloue un IO_RESOURCE_REQUIREMENTS_LIST à partir de la mémoire paginée. Le gestionnaire PnP libère la mémoire tampon quand elle n’est plus nécessaire.

Si un appareil ne nécessite aucune ressource matérielle, le pilote de bus de l’appareil termine l’IRP (IoCompleteRequest) sans modifier Irp-IoStatus.Status> ou Irp-IoStatus.Information>.

Si un pilote de filtre de bus gère cette IRP, il modifie la liste des besoins en ressources créée par le pilote de bus. Un pilote de filtre de bus modifie la liste sur le chemin de l’IRP pour sauvegarder la pile des appareils. Un pilote de filtre de bus doit conserver l’ordre des ressources dans la liste des besoins en ressources et ne doit pas modifier les balises de ressources qu’il ne gère pas. Si un pilote de filtre de bus modifie la taille de la liste des besoins en ressources, le pilote doit allouer une nouvelle structure à partir de la mémoire paginée et libérer la structure précédente. Si un pilote de filtre de bus ajoute une nouvelle exigence de ressource à la liste et que la ressource est affectée à l’appareil, le pilote doit filtrer la nouvelle ressource en dehors de l’IRP IRP_MN_START_DEVICE afin qu’elle ne soit pas transmise au pilote de bus.

Les pilotes de filtre de fonction et non-bus ne gèrent pas cette IRP ; ils le passent au pilote inférieur suivant sans aucune modification à Irp-IoStatus>.

Consultez Plug-and-Play pour connaître les règles générales relatives à la gestion des Plug-and-Play irps mineurs.

Envoi de cet 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)

Voir aussi

IO_RESOURCE_REQUIREMENTS_LIST