Função KeFlushIoBuffers (wdm.h)
A rotina KeFlushIoBuffers libera a região de memória descrita por um MDL de caches de todos os processadores.
Sintaxe
void KeFlushIoBuffers(
[in] PMDL Mdl,
[in] BOOLEAN ReadOperation,
[in] BOOLEAN DmaOperation
);
Parâmetros
[in] Mdl
Um ponteiro para um MDL que descreve o intervalo para o buffer de E/S.
[in] ReadOperation
Especifica TRUE se a liberação está sendo executada para uma operação de leitura e FALSE para uma operação de gravação. Para obter mais informações, consulte a seção Comentários a seguir.
[in] DmaOperation
Especifica TRUE para uma transferência de DMA, FALSE para PIO.
Retornar valor
Nenhum
Comentários
Os drivers chamam KeFlushIoBuffers para manter a integridade dos dados durante as operações de transferência de dispositivo de DMA ou PIO. Chamar essa rotina afeta todos os processadores no computador.
Se ReadOperation for TRUE, o driver estará lendo informações do dispositivo para a memória do sistema, portanto, os dados válidos ainda poderão estar na instrução do processador e nos caches de dados. O KeFlushIoBuffers libera dados de todos os caches de processadores para a memória do sistema, incluindo o processador no qual o chamador está em execução.
Se ReadOperation for FALSE, o driver está gravando dados da memória do sistema em um dispositivo, portanto, os dados válidos podem estar no cache de dados do processador, mas ainda não foram transferidos para o dispositivo. KeFlushIoBuffers libera os caches de dados de todos os processadores, incluindo o do processador no qual o chamador está em execução.
Como regra geral, os drivers devem chamar KeFlushIoBuffers pouco antes de iniciar uma operação de transferência de DMA ou imediatamente após qualquer operação de leitura de PIO.
KeFlushIoBuffers libera apenas a região de memória descrita pelo MDL para a qual o parâmetro Mdl aponta. Para liberar todas as regiões de memória descritas por uma cadeia de MDL, é necessária uma chamada keflushIoBuffers separada para cada MDL na cadeia.
Para obter mais informações, consulte estes tópicos:
Liberando dados armazenados em cache durante operações de DMAliberando dados armazenados em cache durante operações de PIO
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |