Как я могу сказать Windows о необходимости предварительной загрузки файлов?

Моя программа заранее знает, что в будущем она будет обращаться к определенным (многим / большим) файлам или каталогам. Есть ли предусмотренный механизм для передачи этой информации в Windows, чтобы она могла загружать их в буфер? Или мне нужно самому открывать файлы в фоновой ветке?


person mafu    schedule 15.09.2013    source источник


Ответы (1)


Это принцип «каждый использовал бы его, если бы мог». Подобно флагу стиля окна WS_EX_SUPER_TOPMOST и параметрам NIF_NEXT_TO_THE_CLOCK для значения параметра NOTIFYICONDATA.uFlags. Тоже недоступно.

Не то чтобы систему нельзя было обмануть, крупные компании этого не стесняются. Глядя на тебя, Adobe. Вы получаете полную свободу действий на машине, если уговорите пользователя запустить ваш установщик. Таким образом, вы можете установить программу, которая запускается при входе в систему и ничего не делает, кроме загрузки всех необходимых вашей программе DLL. Вы называете это «оптимизатором», чтобы пользователь чувствовал себя хорошо. Несмотря на то, что Prefetch обманывает его, также довольно важно, чтобы вы публиковали ежемесячные критические обновления безопасности, чтобы вы могли вернуть их, когда пользователь удалил их.

Слово «коаксиал» является рабочим, хотя большинство пользователей перестали доверять своим машинам 15 лет назад. Ну нет, программистам перестали доверять. Это никогда не вернется, большой позор.


Если это действительно необходимо для файла, который вам не нужен при запуске, например, неявно загруженной DLL или файла данных, который вам нужно прочитать, чтобы сделать вашу программу полезной, и может предвидеть потребность в файле когда-то в будущем, тогда связанный дубликат - это решение.

person Hans Passant    schedule 15.09.2013
comment
Но ... Я обещаю не буду злоупотреблять этим! - person mafu; 16.09.2013
comment
Из любопытства: разве то же самое не реализовано и в Office 2000? Так что я полагаю, что это понимание и последующая политика относительно новы. - person mafu; 16.09.2013
comment
Я предполагаю, что это понимание неверно, поскольку Microsoft действительно добавила такую ​​функцию. Ответ добавлен к связанному вопросу. - person Ben Voigt; 19.09.2013
comment
Кстати, наличие явных запросов предварительной выборки значительно превосходит метод запуска оптимизатора при запуске с точки зрения пользователя, поскольку ОС может видеть, действительно ли происходит доступ к данным вскоре после этого, и запускать ‹strike›, игнорируя ‹/strike›, лишив приоритета запросов предварительной выборки из программы, которые злоупотребляют этим. Не говоря уже о том, что всем запросам предварительной выборки по умолчанию может быть присвоен более низкий приоритет, чем синхронный ввод-вывод (хотя, если будет доказано, что программа имеет действительно хороший прогноз, может иметь смысл увеличить приоритет). - person Ben Voigt; 20.09.2013