Partager via


Codes de fonction principaux IRP

Each driver-specific I/O stack location (IO_STACK_LOCATION) for every IRP contains a major function code (IRP_MJ_XXX), which tells the driver what operation it or the underlying device driver should carry out to satisfy the I/O request. Chaque pilote en mode noyau doit fournir des routines de répartition pour les codes de fonction principaux qu’il doit prendre en charge.

The specific operations a driver carries out for a given IRP_MJ_XXX code depend somewhat on the underlying device, particularly for IRP_MJ_DEVICE_CONTROL and IRP_MJ_INTERNAL_DEVICE_CONTROL requests. Par exemple, les demandes envoyées à un pilote de clavier sont nécessairement légèrement différentes de celles envoyées à un pilote de disque. Toutefois, le gestionnaire d’E/S définit les paramètres et le contenu de l’emplacement de la pile d’E/S pour chaque code de fonction principal défini par le système.

Every higher-level driver must set up the appropriate I/O stack location in IRPs for the next-lower-level driver and call IoCallDriver, either with each input IRP, or with a driver-created IRP (if the higher-level driver holds on to the input IRP). Par conséquent, chaque pilote intermédiaire doit fournir une routine de répartition pour chaque code de fonction principal géré par le pilote de périphérique sous-jacent. Sinon, un nouveau pilote intermédiaire « interrompt la chaîne » chaque fois qu’une application ou un pilote de niveau supérieur tente d’envoyer une demande d’E/S au pilote de périphérique sous-jacent.

File system drivers and legacy file system filter drivers also handle a required subset of system-defined IRP_MJ_XXX function codes, some with subordinate IRP_MN_XXX function codes. Pour plus d’informations sur la gestion de ces IRPs, consultez les codes de fonction principaux IRP pour les pilotes de système de fichiers et les pilotes de filtre FS hérités.

Les pilotes gèrent les irPs définis avec certains ou tous les codes de fonction principaux suivants :

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_PNP

IRP_MJ_POWER

IRP_MJ_QUERY_INFORMATION

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_SHUTDOWN

IRP_MJ_SYSTEM_CONTROL

IRP_MJ_WRITE

Les paramètres d’entrée et de sortie décrits dans cette section sont les paramètres spécifiques à la fonction dans l’IRP.

For more information about IRPs, see Handling IRPs.