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


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

На некоторых платформах кэши инструкций и данных в процессоре демонстрируют аномалии когерентности кэша во время операций чтения личных сведений.

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

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

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