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 estiver 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.
Valor de retorno
Nenhum
Observações
Os drivers chamam KeFlushIoBuffers para manter a integridade dos dados durante operações de transferência de dispositivo de DMA ou PIO. Chamar essa rotina afeta todos os processadores no computador.
Se readOperation for VERDADEIRO, 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. KeFlushIoBuffers libera dados dos caches de todos os 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 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 à qual o parâmetro Mdl aponta. Para liberar todas as regiões de memória descritas por uma cadeia de MDL, é necessário um KeFlushIoBuffers chamada para cada MDL na cadeia.
Para obter mais informações, consulte os seguintes tópicos:
liberação de dados armazenados em cache durante operações de DMAliberação de dados armazenados em cache durante operações de PIO
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 2000. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |