我已经制作了一个USB数据记录棒,当插入文件下载时,它会显示为USB大容量存储设备。这些文件是离线记录的,但当读取设备上的一个小的(<512字节,1个磁盘扇区)特殊文件时,操作杆可以返回有限的“实时”数据(设备时钟,电池电量,瞬时传感器值) - 基本上就像UNIX设备文件。
读取和使用/显示记录器数据的应用程序是用Python编写的。
我认为我是一个聪明的家伙,直到我真正从这个文件中读取实时数据。事实证明,在Windows下(到目前为止在XP和Win7中测试过),只有应用程序的第一次读取实际上是从设备读取的 - 尝试重新读取文件(扇区)从初始读取中恢复过时的缓存数据,甚至10初始读取后的+分钟,即使文件已关闭并重新打开,或者扇区被写入然后重新读取。也不会通过mmap()访问文件数据导致新读取。后续的读取请求根本不会进入设备。我想Windows'知道'它没有修改文件本身,所以文件内容不可能改变。
是否有任何理智的方法强制后续读取(最好通过'标准'Python文件I / O调用)实际返回设备的新读取而不是缓存数据?
要明确的是,我特指的是阻止READ缓存,而不是在写入后同步磁盘内容。
是否存在可从Python中访问的类似内容?