Как скопировать заблокированный файл непосредственно с диска и убедиться, что файл не поврежден?
Приложение, которое я пишу, должно иметь возможность копировать заблокированные файлы. Мы попытались использовать теневое копирование тома, и хотя это было успешно в копировании файла, приложение, которое имело блокировку на файле, разбилось, потому что оно не могло получить блокировку, пока мы копировали файл.
Мне остается верить, что мой единственный вариант-обойти ОС и читать непосредственно с диска. Проблема в том, что если я читаю непосредственно на диск, я не могу быть уверен в целостности диска. файл, если он находится в середине записи файл будет в поврежденном состоянии.
После нескольких часов поиска мне удалось найти одну утилиту, которая копировала файл непосредственно с диска и использовала драйвер файловой системы для кэширования записей во время копирования, чтобы убедиться, что файл находится в неповрежденном состоянии. Однако эта утилита чрезвычайно дорогая, 100k+ для лицензии, которую я, вероятно, должен был бы использовать.Есть ли у кого-нибудь идеи о том, как достичь того, что я пытаюсь сделать? куда?
Мы планируем ограничить систему только томами NTFS.
3 ответа:
Можете ли вы захватить идентификатор процесса приложения, которое имеет блокировку, и приостановить его поток во время выполнения копирования? Что-то вроде этого http://www.codeproject.com/KB/threads/pausep.aspx
Редактировать:
Что с голосами вниз?
ПРОЧИТАЙТЕ КОММЕНТАРИИ НИЖЕ, ЭТОТ ОТВЕТ СПРАВЕДЛИВ В ОТНОШЕНИИ ЗАДАННОГО ВОПРОСА.
Я закончил с использованием программы на языке C называется DirectCopy написано напалмом. Это работает довольно хорошо.
Http://www.rohitab.com/discuss/topic/24252-ntfs-directcopy-method-from-napalm/
Это Описание "многоуровневых драйверов" может оказаться полезным. Но я ничего об этом не знаю.
Кроме того, если файл заблокирован, то вы можете просто "наблюдать" за ним и ждать, пока он будет разблокирован, а затем быстро скопировать его?