Winapi windows上的fadvise/madvise等效物是什么?

Winapi windows上的fadvise/madvise等效物是什么?,winapi,unix,memory-management,portability,Winapi,Unix,Memory Management,Portability,例如,在UNIX上,我可以告诉操作系统将来需要使用posix\u fadvise(posix\u FADV\u WILLNEED)进行映射。然后,如果它觉得有必要,它将提前读取数据 如何告知Windows的访问意图?您可以将文件\u标志\u随机\u访问或文件\u标志\u顺序\u扫描传递到CreateFile()实际上,正如Anders所建议的那样,在Windows 7及更早版本中可用的内存管理功能中没有这种方法 有两种不同的方法可以做类似的事情: 使用异步方式读取数据。以后需要时,数据可能仍在

例如,在UNIX上,我可以告诉操作系统将来需要使用
posix\u fadvise(posix\u FADV\u WILLNEED)
进行映射。然后,如果它觉得有必要,它将提前读取数据


如何告知Windows的访问意图?

您可以将
文件\u标志\u随机\u访问
文件\u标志\u顺序\u扫描
传递到CreateFile()

实际上,正如Anders所建议的那样,在Windows 7及更早版本中可用的内存管理功能中没有这种方法

有两种不同的方法可以做类似的事情:

  • 使用异步方式读取数据。以后需要时,数据可能仍在文件缓存中
  • 使用的
    file\u FLAG\u SEQUENTIAL\u SCAN
    属性打开带有流式提示的文件。Readahead可能会自动完成

从Windows 8开始,就有了这个功能。

这是Windows上唯一的提示吗?就提示而言,我认为是这样。您可以禁用缓存和类似的功能,但是其他一些标志有对齐要求,因此它不仅仅是一个简单的hintFILE_属性_TEMPORARY看起来也很有用——根据它的说法,它告诉系统如果有足够的缓存内存可用,就避免将数据写入磁盘。