Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посекторная запись на диск. Хм. Есть проблема. [D6, WinXP]


незнайка ©   (2004-01-13 20:01:00) 

Привет всем..

Ситуация такая...   Есть форматированный диск (1 раздел) и на него я посекторно записываю сохраненные раннее сектора (несколько разделов). Если я открываю диск в начале это процедуры, закрываю в конце и перезагружаюсь - все нормально.. все данные восстанавливаются, НО если в процессе записи я закрываю диск и открываю , прерывая и продолжая процесс записи секторов, то начинаются проблемы: Win при перезагрузки находит потерянные кластеры и т.п... Какие то данные остаются, какие то исчезают. Так вот вопрос: чем Win занимается, когда я в процессе записи прерываю процесс и закрываю диск?


Незнайка   (2004-01-15 23:43:00) [1]

Ага :))  это то, что нужно: This operation is used in synchronizing the system view of the specified disk device when the partition table of the disk is directly modified.


Alex Konshin   (2004-01-15 20:24:00) [2]

Ууу как я крут! :-) Угадал!


незнайка   (2004-01-15 13:03:00) [3]

Все заработало ;) Причем достаточно только команды IOCTL_DISK_UPDATE_PROPERTIES...


незнайка   (2004-01-14 12:32:00) [4]

СПАСИБО!Сейчас буду пробовать...   посмотрим..


Alex Konshin   (2004-01-14 11:51:00) [5]

http://home.earthlink.net/~akonshin/files/ntdddisk.h


Alex Konshin   (2004-01-14 11:43:00) [6]

В Windows DDK.
В IFS Kit тоже есть.


незнайка   (2004-01-14 10:57:00) [7]

Cпасибо.. попробую.. кстати, где можно найти winioctl.hчтоб посмотреть как вычисляется IOCTL_DISK_UPDATE_PROPERTIES?


Alex Konshin   (2004-01-14 10:39:00) [8]

Тогда еще хуже. Нужно же по крайней мере сказать системе, чтоб перечитала таблицу разделов.
Короче, читай сам
http://msdn.microsoft.com/library/en-us/fileio/base/storage_overview.asp
Я тут не великий гуру, много не насоветую, но копать явно нужно в эту сторону.
Например, тебе явно понадобится http://msdn.microsoft.com/library/en-us/fileio/base/ioctl_disk_update_properties.asp


Незнайка   (2004-01-14 07:42:00) [9]

Весь физический диск.. полностью.


Alex Konshin   (2004-01-14 04:11:00) [10]

Ну тогда точно кеш. Ты подменяешь то, что система уже прочитала и держит в кеше. Как сбросить - не знаю. Думаю, что нужно как-то брать диск в монопольное владение и потом сообщить, что давай перечитай все на фиг. Как - не знаю. Но должно быть что-то типа юниксовского mount, надо посмотреть в каких-нибудь исходниках что делается до и после форматирования диска.
Да, ты перезаписываешь данные раздела (volume) или вообще весь физический диск?


Незнайка   (2004-01-13 22:31:00) [11]

и то и другое..  это снятый посекторно образ диска...


Alex Konshin   (2004-01-13 22:23:00) [12]

А эти сектора часть существующих файлов или самой файловой системы?


незнайка   (2004-01-13 20:13:00) [13]

В смысле? Ты имеешь в виду, что данные из кеша еще не ушли на диск, а я его уже закрыл? Да нет.. Кеш вроде должен нормально записаться на диск и после закрытия..  хм..


Alex Konshin   (2004-01-13 20:06:00) [14]

Кеш?


Наверх

Титульная страница Поиск, карта сайта Написать письмо