Rotinas DispatchRead, DispatchWrite e DispatchReadWrite
As rotinas DispatchRead e DispatchWrite de um driver lidam com IRPs com códigos de função de E/S de IRP_MJ_READ e IRP_MJ_WRITE, respectivamente. Como alternativa, uma rotina combinada do DispatchReadWrite pode lidar com IRPs para ambos os códigos de função de E/S.
Cada driver de um dispositivo do qual os dados podem ser transferidos para o sistema deve ter uma rotina DispatchRead . Cada driver de um dispositivo para o qual os dados podem ser transferidos do sistema deve ter uma rotina DispatchWrite . Qualquer driver que transfere dados em ambas as direções pode ter uma rotina combinada do DispatchReadWrite .
Os drivers de nível inferior lidam com solicitações de IRP_MJ_READ e IRP_MJ_WRITE de forma assíncrona. Portanto, as rotinas DispatchRead e/ou DispatchWrite em drivers de nível mais alto devem passar essas solicitações para processamento adicional, desde que a solicitação tenha parâmetros válidos no local da pilha de E/S desse driver do IRP.
Se um driver configura seus objetos de dispositivo para E/S em buffer ou direto afeta como ele lida com solicitações de transferência. Em particular, um driver que usa E/S direta para fazer operações de DMA pode precisar dividir grandes solicitações de transferência em uma sequência de operações de transferência menores para atender a uma solicitação de IRP_MJ_READ ou IRP_MJ_WRITE . Para obter mais informações, consulte Técnicas de entrada/saída.
As subseções a seguir discutem algumas das considerações de design e implementação para rotinas DispatchReadWrite em drivers de dispositivo de nível mais baixo que usam E/S em buffer e E/S direta, bem como em drivers de nível superior sobre eles:
Manipulando transferências de forma assíncrona
DispatchReadWrite usando E/S em buffer
DispatchReadWrite usando E/S Direta