Windows无缓冲I / O& NCQ

时间:2010-11-16 20:07:05

标签: c++ file-io filesystems winapi

当使用无缓冲的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,但我无法再次找到该文章。

1 个答案:

答案 0 :(得分:2)

简短回答是“是的,有可能”。

更长的答案是“甚至不能保证将连续'扇区'的数据写入相邻的磁盘扇区。”

可能会出现各种各样的“系统”缓存。甚至可以加密或压缩文件系统。

问题是“你为什么关心?”你想解决什么问题?