Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Посекторная запись на диск. Хм. Есть проблема.   Найти похожие ветки 

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

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

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


 
Alex Konshin ©   (2004-01-13 20:06) [1]

Кеш?


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

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


 
Alex Konshin ©   (2004-01-13 22:23) [3]

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


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

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


 
Alex Konshin ©   (2004-01-14 04:11) [5]

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


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

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


 
Alex Konshin ©   (2004-01-14 10:39) [7]

Тогда еще хуже. Нужно же по крайней мере сказать системе, чтоб перечитала таблицу разделов.
Короче, читай сам
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 10:57) [8]

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


 
Alex Konshin ©   (2004-01-14 11:43) [9]

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


 
Alex Konshin ©   (2004-01-14 11:51) [10]

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


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

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


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

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


 
Alex Konshin ©   (2004-01-15 20:24) [13]

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


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

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



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 2.89 c
3-1078331930
Fixxxer
2004-03-03 19:38
2004.04.04
вопрос по Quick Report


14-1078670557
В л а д и м и р
2004-03-07 17:42
2004.04.04
Delphi 6 и Exel


7-1074185908
Miau
2004-01-15 19:58
2004.04.04
Типы из DLL


6-1071939663
KoLoB
2003-12-20 20:01
2004.04.04
Разорвать соединение


1-1079268363
novi
2004-03-14 15:46
2004.04.04
Реакция на указатель мыши объекта.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский