Compartilhar via


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 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 transfira dados em ambas as direções pode ter uma rotina combinada 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 do driver do IRP.

Se um driver configura os seus objetos de dispositivo para E/S em buffer ou direta, isso afeta a maneira 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 em camadas acima deles:

Manipulando transferências de forma assíncrona

DispatchReadWrite usando E/S em buffer

DispatchReadWrite usando E/S direta

DispatchReadWrite em drivers de Higher-Level

Resumo das rotinas de despacho de leitura/gravação