Usando E/S Direta

Os drivers para dispositivos que podem transferir grandes quantidades de dados por vez devem usar E/S direta para essas transferências. O uso de E/S direta para grandes transferências melhora o desempenho de um driver, reduzindo sua sobrecarga de interrupção e eliminando as operações de alocação de memória e cópia inerentes à E/S em buffer.

Geralmente, os drivers de dispositivo de armazenamento em massa solicitam E/S direta para solicitações de transferência, incluindo drivers de nível mais baixo que usam DMA (acesso direto à memória) ou E/S programado (PIO), bem como quaisquer drivers intermediários encadeados acima deles.

O gerente de E/S determina que uma operação de E/S está usando E/S direta da seguinte maneira:

Os drivers que usam E/S direta às vezes também usarão E/S em buffer para lidar com alguns IRPs. Em particular, os drivers normalmente usam E/S em buffer para alguns códigos de controle de E/S para solicitações de IRP_MJ_DEVICE_CONTROL que exigem transferências de dados, independentemente de o driver usar E/S direta para operações de leitura e gravação.

A configuração de uma transferência direta de E/S varia ligeiramente, dependendo se o DMA ou o PIO está sendo usado. Para obter mais informações, consulte:

Usando E/S Direta com DMA

Usando E/S Direta com PIO

Os drivers devem tomar medidas para manter a coerência do cache durante as transferências de DMA e PIO. Para obter mais informações, consulte Mantendo a coerência do cache.