Codes de fonction principaux IRP

Chaque emplacement de pile d’E/S spécifique au pilote (IO_STACK_LOCATION) pour chaque IRP contient un code de fonction majeur (IRP_MJ_XXX), qui indique au pilote quelle opération il ou le pilote de périphérique sous-jacent doit effectuer pour répondre à la demande d’E/S. Chaque pilote en mode noyau doit fournir des routines de répartition pour les principaux codes de fonction qu’il doit prendre en charge.

Les opérations spécifiques qu’un pilote effectue pour un code IRP_MJ_XXX donné dépendent quelque peu de l’appareil sous-jacent, en particulier pour les requêtes IRP_MJ_DEVICE_CONTROL et IRP_MJ_INTERNAL_DEVICE_CONTROL . Par exemple, les requêtes envoyées à un pilote de clavier sont nécessairement quelque peu 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 majeure défini par le système.

Chaque pilote de niveau supérieur doit configurer l’emplacement de pile d’E/S approprié dans les IRPs pour le pilote de niveau inférieur suivant et appeler IoCallDriver, soit avec chaque IRP d’entrée, soit avec un IRP créé par le pilote (si le pilote de niveau supérieur conserve l’IRP d’entrée). Par conséquent, chaque pilote intermédiaire doit fournir une routine de répartition pour chaque code de fonction majeur que le pilote de périphérique sous-jacent gère. Sinon, un nouveau pilote intermédiaire « casse 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.

Les pilotes de système de fichiers et les pilotes de filtre de système de fichiers hérités gèrent également un sous-ensemble requis de codes de fonction IRP_MJ_XXX définis par le système, certains avec des codes de fonction IRP_MN_XXX subordonnés. Pour plus d’informations sur la gestion de ces irps, consultez 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 tout ou partie des 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.

Pour plus d’informations sur les IRPs, consultez Gestion des IRPs.