Как я могу получить уведомление об изменении файла до начала записи? - PullRequest
0 голосов
/ 27 декабря 2011

Я хочу хранить все версии всех файлов на диске.Проблема в том, что я не хочу делать копию всего диска.Вместо этого я хотел бы получить уведомление о том, что файл собирается измениться, и тогда я смогу создать его копию.Это позволило бы файлам, которые не изменяются, не тратить место на диске.Есть ли способ, которым я могу это реализовать?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

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

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

В вашем вопросе также есть внутренняя двусмысленность. Если я сделаю это:

for(int i=0; i<100; i++) *(WritableFileMapping)=i;

Это 100 пишет? Хотите получать уведомления 100 раз?

0 голосов
/ 27 декабря 2011

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

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