Partilhar via


Usando E/S diretas

Os drivers para dispositivos que podem transferir grandes quantidades de dados de cada vez devem usar E/S direta para essas transferências. O uso de E/S diretas para grandes transferências melhora o desempenho de um driver, reduzindo sua sobrecarga de interrupção e eliminando a alocação de memória e as operações de 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 acesso direto à memória (DMA) ou E/S programada (PIO), bem como quaisquer drivers intermediários encadeados acima deles.

O gerenciador 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 usam E/S em buffer para lidar com alguns IRPs. Particularmente, os drivers normalmente usam E/S em buffer para determinados códigos de controlo de E/S em solicitações 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 DMA ou PIO está sendo usado. Para obter mais informações, consulte:

Usando E/S diretas com DMA

Usando E/S diretas com PIO

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