Подтвердить что ты не робот

Как скопировать заблокированный файл непосредственно с диска и убедиться, что файл не поврежден?

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

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

После нескольких часов поиска я смог найти одну утилиту, которая скопировала файл непосредственно с диска и использовала драйвер файловой системы для кэширования записей при копировании, чтобы он мог убедиться, что файл находится в неповрежденном состоянии. Тем не менее, эта утилита необычайно дорога, 100k + для лицензии, которую я, скорее всего, буду использовать.

Есть ли у кого-нибудь идеи о том, как выполнить то, что я пытаюсь сделать?

Мы планируем ограничить систему только томами NTFS.

4b9b3361

Ответ 2

Можете ли вы получить идентификатор процесса приложения, которое заблокировано, и приостановить его выполнение во время выполнения копирования? Примерно так http://www.codeproject.com/KB/threads/pausep.aspx