Windows有一个FILE_FLAG_NO_BUFFERING
标志,允许您指定是否希望文件系统缓存您的I / O.
没关系,但是如果可能的话,我想使用缓存,但是避免修改呢?
换句话说,您如何告诉Windows以下内容?
如果缓存已经缓存,请从缓存中读取此文件,但我的数据不会显示位置,因此不要将其放入缓存!
SCSI标准定义了一个Disable Page Out位,正是这样做的,所以我想知道如何(如果有的话)可以从Windows使用该功能(与文件系统缓存的合作,也是如此)当然)?
编辑:TL; DR:
读取的FILE_FLAG_WRITE_THROUGH
相当于什么?
答案 0 :(得分:1)
关于最近的Windows提供的内容是FILE_FLAG_WRITE_THROUGH
。
答案 1 :(得分:0)
我看到两个看起来像你要求的标志:
FILE_FLAG_RANDOM_ACCESS
FILE_FLAG_SEQUENTIAL_SCAN
后者的文档清楚地表明它不会在缓存中保留页面,尽管它可能会顺序读取。前者的文档是完全不透明的,但似乎暗示了你想要的东西。如果模式非常随机,挂在页面上以供以后重用将浪费内存。
请记住,对于文件,Windows内核总是会使用一些“缓存”页面来保存I / O.它无处可去。所以说“不要缓存它”是没有意义的,而不是“在逐出其他页面之前逐出该文件的旧页面。”