2

Некоторые программы имеют возможность избежать использования кэша ОС при доступе к файлам (например, Virtualbox и qbittorrent). Им не нужны права администратора, поэтому они определенно не отключают кэш файловой системы.

Как программа могла читать / писать напрямую с диска и обходить кеш ОС, только для себя?

2 ответа2

2

Это опция функции API открытия файлов Windows CreateFile.

Опция называется FILE_FLAG_WRITE_THROUGH определенная как:

Операции записи не будут проходить через промежуточный кеш, они будут идти непосредственно на диск.

Для получения дополнительной информации см .:

Последняя ссылка говорит дополнительно:

Флаг FILE_FLAG_WRITE_THROUGH для CreateFile() приводит к тому, что любые записи, сделанные в этот дескриптор, записываются непосредственно в файл без буферизации.
[...]
FILE_FLAG_NO_BUFFERING продвигает эту концепцию на один шаг вперед и устраняет всю файловую буферизацию с упреждающим чтением, а также кэширование диска, так что все чтения гарантированно поступают из файла, а не из какого-либо системного буфера или дискового кэша. При использовании FILE_FLAG_NO_BUFFERING чтение и запись на диск должны выполняться на границах секторов, а адреса буфера должны быть выровнены на границах секторов диска в памяти.

Меня не удивит, что не многие продукты используют флаг FILE_FLAG_NO_BUFFERING.

1

Откройте файл с помощью FILE_FLAG_NO_BUFFERING

Смотрите функцию CreateFile на MSDN

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .