Что такое fadvise/madvise эквивалент на окнах?

В UNIX я могу, например, сообщить ОС, что отображение будет необходимо в будущем с помощью posix_fadvise(POSIX_FADV_WILLNEED). Затем он будет считывать данные, если это так.

Как сообщить, что доступ предназначен для Windows?

Ответ 1

На самом деле, как обычно предлагал Андерс, такого метода нет в функциях управления памятью, доступных в Windows 7 и более ранних версиях.

Существует 2 разных способа сделать что-то подобное:

  • Прочитайте данные асинхронно с ReadFileEx. Затем данные могут по-прежнему находиться в кеше файлов, если это необходимо позже.
  • Откройте файл с потоковой подсказкой с атрибутом FILE_FLAG_SEQUENTIAL_SCAN CreateFile. Readahead, возможно, будет автоматически выполнен.

Ответ 2

Начиная с Windows 8, для этой цели существует функция PrefetchVirtualMemory.

Ответ 3

Вы можете передать FILE_FLAG_RANDOM_ACCESS или FILE_FLAG_SEQUENTIAL_SCAN в CreateFile()