当使用无缓冲的I / O(CreateFile with FILE_FLAG_NO_BUFFER / FILE_FLAG_WRITE_THROUGH)并写入多个扇区时,每次调用WriteFile,是否有可能扇区写入不同的orrrer然后从头到尾?
int iSizeToAlloc = sector_size * 32;
char *pAlignedMemory = alloc(iSizeToAlloc)
// Here, write 32 sectors, is it possible that sector 2 is written before sector 1 ?
::WriteFile(pAlignedMemory,iSizeToAlloc);
我想我已经阅读了某些内容,当指定FILE_FLAG_NO_BUFFER时,Windows会指示磁盘子系统禁用NCQ,但我无法再次找到该文章。
答案 0 :(得分:2)
简短回答是“是的,有可能”。
更长的答案是“甚至不能保证将连续'扇区'的数据写入相邻的磁盘扇区。”
可能会出现各种各样的“系统”缓存。甚至可以加密或压缩文件系统。
问题是“你为什么关心?”你想解决什么问题?