Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Копирование системного раздела


Автор: cs137 8.2.2008, 07:45
Привет всем!
Может ли кто-нибудь сказать, каким образом можно скопировать системный раздел без потери данных?
Имеется такая программа DriveSnapshot (http://www.drivesnapshot.de/en/), которая так делает. Там также используется технология VSS (Shadow Copy) от Microsoft, но она (программа) может копировать системные разделы и без использования VSS. VSS меня не интересует.

Что я имею ввиду под потерей данных:
Дело в том, что во время копирования раздела, если его не заблокировать, то пользователь будет иметь возможность изменять на нем данные. И после полного копирования имеется большая вероятность того, что данные окажутся некоректными. В часности окажется что файловая таблица и содержимое раздела не совпадают, т.е. в файловой таблице имеется запись, что файл имярек находится в таких-то кластерах, а на самом деле, пока происходило копирование, пользователь удалил этот файл, т.п.

Если раздел не системный, то там все гораздо проще:
Код

// open volume for reading
HANDLE hDevice = CreateFile(...);

// lock volume
DWORD dwLock;
DeviceIoControl(hDevice, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &dwLock, NULL);

// binary reading data with ReadFile
...

// unlock volume
DeviceIoControl(hDevice, FSCTL_UNLOCK_VOLUME, NULL, 0, NULL, 0, &dwLock, NULL);
 
// close volume handle
CloseHandle(hDevice);


Заранее спасибо!

Автор: BorisVorontsov 8.2.2008, 16:06
Ну, как вариант, перехватывай CreateFile и обновляй данные.

Автор: PPS05 9.2.2008, 16:25
Цитата(BorisVorontsov @  8.2.2008,  15:06 Найти цитируемый пост)
Ну, как вариант, перехватывай CreateFile и обновляй данные.


Имхо, сложно и муторно: ведь надо перехватить как минимум ZwCreateFile, ZwReadFile, ZwWriteFile... + внедриться во все процессы... Судя по их FAQ они так и делают, но как объянить это из того же FAQ:
Цитата

May I install a new VIRUS, while Snapshot is running?
Yes. It won't make you happy, but Snapshot won't care. The created image will not contain any sign of a virus, ready to be restored.
?

Автор: cs137 15.2.2008, 12:27
Цитата(PPS05 @  9.2.2008,  16:25 Найти цитируемый пост)
Судя по их FAQ они так и делают

Не похоже на то... Они делают это как-то по другому... Но вот как!?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)