Очистка кэшированных данных во время операций pio
На некоторых платформах кэши инструкций и данных в процессоре демонстрируют аномалии когерентности кэша во время операций чтения личных сведений.
Примечание Чтобы обеспечить целостность данных во время операций чтения, драйверы, использующие piO, должны следовать следующему руководству: Вызов KeFlushIoBuffers в конце каждой операции чтения.
Например, драйвер, выполняющий передачу личных сведений с устройства в системную память, должен вызывать KeFlushIoBuffers в конце каждой операции передачи устройства. В качестве другого примера драйвер, который считывает последовательность регистров устройств в системную память, должен вызывать KeFlushIoBuffers в конце последовательности. В противном случае такой драйвер может попытаться получить доступ к данным, которые все еще есть в кэше данных процессора, а не в системной памяти, на некоторых платформах.
KeFlushIoBuffers ничего не делает, если процессор можно использовать для поддержания когерентности кэша, поэтому вызовы этой подпрограммы поддержки почти не имеют накладных расходов на такой платформе.