Поддерживает ли Win32 сопоставленные с памятью файлы (CreateFileMapping) в файловых системах FAT? - PullRequest
4 голосов
/ 12 июля 2010

Меня беспокоит опасность использования сопоставленного с памятью ввода-вывода через CreateFileMapping в файловых системах FAT. Конкретный сценарий - это пользователи, открывающие документы непосредственно с USB-накопителей (да, вы пытаетесь запретить им это!).

В статье MSDN Управление отображаемыми в память файлами ничего не говорится об ограничениях файловой системы.

Обновление

У меня не было никакой реальной причины для беспокойства, но смутное ощущение, что я когда-то читал о проблемах с ними (моя карьера длится более 25 лет, поэтому у меня много смутных глубин в моей памяти, все обратный путь к 8-битным микросхемам!). Вопрос о том, должны ли они поддерживаться или нет, очень важен для меня, поэтому я хотел спросить, может ли кто-нибудь подтвердить мои опасения. Спасибо, что успокоил мой разум.

Ответы [ 2 ]

7 голосов
/ 13 июля 2010

Отображаемые в память файлы - одна из моих любимых функций. Это абсолютно не опасно .Это одна из базовых чрезвычайно оптимизированных функций ввода / вывода Windows.Если запустить EXE или косвенно загрузить DLL, это будет реализовано внутри как отображение файлов с отображением в памяти.

Поддерживается на всех типах файловых систем , включая FAT.

Кстати, atzz говорят, что сопоставленные с памятью файлы разрешены на сетевых дисках.Я могу добавить, что это не только разрешено, но настоятельно рекомендуется использовать отображенный в памяти файл также с файлами из сети.В этом случае операция ввода-вывода будет кэшироваться очень хорошо, что не выполняется с другими (C / C ++) ввода-вывода.

Если вы хотите, чтобы EXE-файл не падал при его открытиис компакт-диска или по сети можно пометить исполняемый файл программы с одним битом в заголовке (переключатель компоновщика / SWAPRUN см. http://msdn.microsoft.com/en-us/library/chzz5ts6.aspx). Нет опции для документов, открытых с USB-накопителя.

Но какую именно проблему решаюту пользователей? Не используют ли они значок «Безопасное извлечение устройства»? Затем им нужно научиться делать это точно так же, как они учатся не переключать питание компьютера, а правильно его выключать.

МожетВы объясняете, почему вы находите опасности в использовании файлов, отображаемых в память, и в каких ситуациях у вас возникают проблемы, и нет ли проблем с использованием других операций ввода-вывода?

6 голосов
/ 12 июля 2010

Да, это так. Он даже поддерживает сопоставление файлов на CDFS или на сетевых дисках. Каков источник ваших сомнений?

...