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


Функция 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.

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

None

Remarks

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

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

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

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

См. также раздел

FlushAdapterBuffers