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)

Confira também

FlushAdapterBuffers