Routines DispatchRead, DispatchWrite et DispatchReadWrite
Les routines DispatchRead et DispatchWrite d’un pilote gèrent les irPs avec des codes de fonction d’E/S de IRP_MJ_READ et de IRP_MJ_WRITE, respectivement. Une routine DispatchReadWrite combinée peut également gérer les irps pour ces 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 doit avoir une routine DispatchRead . Chaque pilote d’un appareil vers lequel les données peuvent être transférées à partir du système doit 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 qu’un pilote configure ses objets d’appareil pour les E/S directes ou mises en mémoire tampon affecte la façon 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 IRP_MJ_READ ou IRP_MJ_WRITE . Pour plus d’informations, consultez Techniques d’entrée/sortie.
Les sous-sections suivantes décrivent certaines des considérations relatives à la conception et à l’implémentation des routines DispatchReadWrite dans les pilotes de périphériques de niveau inférieur 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 d’eux :
Gestion des transferts de manière asynchrone
DispatchReadWrite à l’aide d’E/S mises en mémoire tampon
DispatchReadWrite à l’aide d’E/S directes