执行 PIO 操作期间刷新缓存数据

在某些平台上,处理器中的指令和数据缓存在 PIO 读取操作期间表现出缓存一致性异常。

注意 若要在读取操作期间维护数据完整性,使用 PIO 的驱动程序必须遵循以下准则:在每个读取操作结束时调用 KeFlushIoBuffers

例如,从设备到系统内存进行 PIO 传输的驱动程序应在每个设备传输操作结束时调用 KeFlushIoBuffers 。 再举一例,将设备寄存器序列读入系统内存的驱动程序应在序列末尾调用 KeFlushIoBuffers 。 否则,此类驱动程序可能会尝试在某些平台上访问仍在处理器的数据缓存中,而不是系统内存中的数据。

如果可以依赖处理器来维持缓存一致性,则 KeFlushIoBuffers 不执行任何操作,因此调用此支持例程在此类平台中几乎没有开销。