Есть ли возможность в Windows создать файл с байтами, содержащимися в оперативной памяти? - PullRequest
0 голосов
/ 25 апреля 2019

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

Мне нужно написать программу (программу B), которая может создать такой файл, но этот файл должен быть физически в оперативной памяти, а не на жестком диске.Поэтому, если вы отключите жесткий диск, вы не сможете найти файл.

У меня также нет доступа к коду программы А.Но я хочу, чтобы А. интерпретировал этот файл как обычный файл.

Возможно ли в Windows сделать что-то подобное?

1 Ответ

1 голос
/ 25 апреля 2019

Единственный способ получить файл, который находится только в памяти, - это использовать RAM-диск . Вы можете найти бесплатные RAM-диски и, возможно, некоторые реализации с открытым исходным кодом, но они требуют драйвера ядра. Точки монтирования NTFS позволят вам смонтировать этот диск как подпапку на диске C: если это необходимо.

С точки зрения программирования, единственное, что могла бы сделать программа B, это установить флаг удаления при закрытии после того, как программа A открыла файл. В зависимости от того, как A использует файл, вы можете просто удалить файл, а если нет, B должен будет вызвать SetFileInformationByHandle(FileDispositionInfo, ...) для дескриптора файла, но это будет работать, только если программа A откроет файл с установленными флагами общего доступа, разрешающими удаление. Я никогда не проверял это, поэтому я не уверен на 100%, что это сработает, если пропадет питание. В NTFS есть журналирование, которое проверяет правильность состояния файловой системы, но я не уверен, применимо ли это к флагу удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...