Как скопировать заблокированный файл прямо с диска и убедиться, что файл не поврежден? - PullRequest
12 голосов
/ 07 июня 2011

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Я использовал C-программу под названием DirectCopy, написанную Napalm .Работает довольно хорошо.

http://www.rohitab.com/discuss/topic/24252-ntfs-directcopy-method-from-napalm/

1 голос
/ 09 июня 2011

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

0 голосов
/ 15 июня 2011

Это описание "многоуровневых драйверов" может быть полезным.Я ничего об этом не знаю.

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

...