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