Partager via


Routines DispatchRead, DispatchWrite et DispatchReadWrite

Les routines DispatchRead et DispatchWrite d’un pilote gèrent respectivement les irPs avec des codes de fonction d’E/S de IRP_MJ_READ et de IRP_MJ_WRITE. Vous pouvez également gérer une routine combinée DispatchReadWrite pour les deux codes de fonction d’E/S.

Chaque pilote d’un appareil à partir duquel les données peuvent être transférées vers le système doivent avoir une routine DispatchRead . Chaque pilote d’un appareil auquel les données peuvent être transférées à partir du système doivent avoir une routine DispatchWrite . Tout pilote qui transfère des données dans les deux directions peut avoir une routine DispatchReadWrite combinée.

Les pilotes de niveau inférieur gèrent les requêtes IRP_MJ_READ et IRP_MJ_WRITE de manière asynchrone. Par conséquent, les routines DispatchRead et/ou DispatchWrite dans les pilotes de niveau supérieur doivent transmettre ces demandes pour un traitement ultérieur, à condition que la demande ait des paramètres valides dans l’emplacement de la pile d’E/S de ce pilote de l’IRP.

Le fait que le pilote configure ses objets d’appareil pour les E/S mises en mémoire tampon ou directes a une incidence sur la manière dont il gère les demandes de transfert. En particulier, un pilote qui utilise des E/S directes pour effectuer des opérations DMA peut avoir besoin de fractionner les demandes de transfert volumineuses en une séquence d’opérations de transfert plus petites afin de satisfaire une demande de IRP_MJ_READ ou de IRP_MJ_WRITE . Pour plus d’informations, consultez Techniques d’entrée/sortie.

Les sous-sections suivantes décrivent certaines considérations relatives à la conception et à l’implémentation pour les routines DispatchReadWrite dans les pilotes de périphérique de niveau le plus bas qui utilisent des E/S mises en mémoire tampon et des E/S directes, ainsi que dans les pilotes de niveau supérieur superposés au-dessus de ces derniers :

Gestion des transferts de manière asynchrone

DispatchReadWrite utilisant des E/S tamponnées

DispatchReadWrite utilisant des E/S directes

DispatchReadWrite dans les pilotes Higher-Level

Résumé des routines de Dispatch en lecture/écriture