c++ - ReadFile FILE_FLAG_NO_BUFFERING 如何读取两个扇区之间的数据

标签 c++ windows-xp

我正在使用 Windows ReadFile 函数按顺序读取一个 4GB 的文件,使用 FILE_FLAG_NO_BUFFERING。我使用 64K 的缓冲区,一切正常,但问题是我的数据在当前缓冲区的末尾和下一次读取之间被切断。例如,我有一个 4 字节 float 序列,当我到达最后一个 float 时,当前缓冲区中只有三个字节,下一个字节将进入下一个读取缓冲区。那么我该如何处理呢?我是否应该跟踪消耗的字节数以保留最后三个字节,然后在读取下一个缓冲区后追加最后一个字节?或者也许将缓冲区复制到另一个缓冲区并在那里跟踪 float ?但这并没有破坏不使用 Windows 缓存读取的优势?感谢您的帮助。

最佳答案

我认为在你处于边界上的特殊情况下,你应该将前一个 block 的位和下一个 block 的位并排复制到一个小的暂存空间中,然后从那里读取它们一 block 。当你不在边界上时,你不需要使用这个暂存空间。

关于c++ - ReadFile FILE_FLAG_NO_BUFFERING 如何读取两个扇区之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136184/

相关文章:

c - 使用 C 程序截取 Windows 桌面的屏幕截图。

c++ - VBO 比绘制基元的过时方法慢 - 为什么?

c++ - 与任何类型的函数的接口(interface)

c++ - 如何显式调用命名空间限定的析构函数?

c++ - 从 Windows XP 32 位迁移到 Windows 7 64 位的 Excel 插件错误

Eclipse IDE 问题 "not win32 application"

python - easy_install 在 Windows XP 中出现错误 "Not a recognized archive type"

c++ - 丢失蒙皮网格

c++ - jemalloc 未检测到内存损坏

c# - 使用脚本编辑 windows xp 注册表