Поделиться через


Функция KeFlushIoBuffers (wdm.h)

Программа KeFlushIoBuffers очищает область памяти, описанную MDL из кэшей всех процессоров.

Синтаксис

void KeFlushIoBuffers(
  [in] PMDL    Mdl,
  [in] BOOLEAN ReadOperation,
  [in] BOOLEAN DmaOperation
);

Параметры

[in] Mdl

Указатель на MDL, описывающий диапазон для буфера ввода-вывода.

[in] ReadOperation

Указывает TRUE, если очистка выполняется для операции чтения и FALSE для операции записи. Дополнительные сведения см. в следующем разделе "Примечания".

[in] DmaOperation

Указывает TRUE для передачи DMA, FALSE для PIO.

Возвращаемое значение

Никакой

Замечания

Драйверы вызывают KeFlushIoBuffers для поддержания целостности данных во время операций передачи устройств DMA или PIO. Вызов этой подпрограммы влияет на все процессоры на компьютере.

Если readOperationTRUE, драйвер считывает сведения с устройства в системную память, поэтому допустимые данные по-прежнему могут находиться в инструкциях процессора и кэшах данных. KeFlushIoBuffers сбрасывает данные из кэшей всех процессоров в системную память, включая процессор, на котором выполняется вызывающий объект.

Если readOperationFALSE, драйвер записывает данные из системной памяти на устройство, поэтому допустимые данные могут находиться в кэше данных процессора, но еще не переданы на устройство. KeFlushIoBuffers сбрасывает кэши данных всех процессоров, включая процессор, на котором запущен вызывающий объект.

Как правило, водители должны вызывать KeFlushIoBuffers непосредственно перед началом операции передачи DMA или немедленно после любой операции чтения PIO.

KeFlushIoBuffers сбрасывает только область памяти, описанную MDL, на которую указывает параметр MDL Mdl. Для очистки всех областей памяти, описанных цепочкой MDL, требуется отдельный KeFlushIoBuffers вызов для каждого MDL в цепочке.

Дополнительные сведения см. в следующих разделах:

очистка кэшированных данных во время операций DMAочистка кэшированных данных во время операций piO

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
правил соответствия DDI MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

См. также

FlushAdapterBuffers