Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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