Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Как узнать таблицу разделов на дисках и вообще как это работает   Найти похожие ветки 

 
Rule ©   (2009-10-27 15:13) [0]

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

Так вот это раздел определнного специфичного типа, который системе неизвестен.

Так вот задача такова: получить таблицу раздела всех дисков на Линуксе, Винде и МакОС.
Под линуксом все просто - там есть GNU gparted. Под Мак ОС приблизительно представляю - все разделы появляются в /dev/disk[n]s[n] пожно с них прочитать первые нацать байт меджик слова чтоб определить тип раздела.

А вот как обстоит дело в Винде ? И вообще мож кто книжку по этой теме знает типа "Inside File Systems" или чтонить в этом роде, чтоб побольше узнать как вообще устроены разные системы разбиения дисков (насколько я знаю их 3 бывает) и различить разные файловые системы.

С уважением.


 
Игорь Шевченко ©   (2009-10-27 15:52) [1]

Everest запусти - оно тебе все покажет.
Или тут реклама была на Paragon Partition Manager - бесплатная закачка


 
Rule ©   (2009-10-27 17:41) [2]

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


 
oldman ©   (2009-10-27 17:49) [3]


> Rule ©   (27.10.09 17:41) [2]
> просто есть неким японцем придуманая файловая система
> естественно ни одной ОС она не определяется


Ну и на фига она нужна?


 
Dennis I. Komarov ©   (2009-10-27 18:00) [4]


> Ну и на фига она нужна?

Не нужна, но она есть и видимо с ней нужно работать...


 
Игорь Шевченко ©   (2009-10-27 18:02) [5]


> Вот меня собственно и интересует как Eveerest например узнает
> таблицу разделов.


Очевидно читает. Под Windows легко с помощью функции DeviceIoControl - я даже когда-то программу писал, которая это делает и показывает, как в Everest

Но как ты понимаешь, для того, чтобы файловую систему можно было распознать, надо написать драйвер этой файловой системы и подключить его к драйверу распознавания файловых систем. А это уже не такая простая задача, как кажется. Даже имеющиеся драйвера для ext2fs были кривыми и падали, увлекая за собой систему - а Ext2fs изучена вдоль и поперек.


 
Rule ©   (2009-10-27 18:03) [6]

Все верно, она уже есть :-) и есть только инструменты командной строки для работы с ней. Необходимо сделать ГУИ для дураков.
Тем более там как таковые файлы не хранятся в этой файловой системе, там хранятся блоки данных. большие, до 9 гиг каждый но в среднем где-то 4. И все в принципе.


 
Rule ©   (2009-10-27 18:07) [7]

Игорь Шевченко ©   (27.10.09 18:02) [5]
Не задача не чтоб винда распознала, а чтоб я распознал в своем коде. Насколько я знаю достаточно знать раздел и прочитать с него как с блочного устройства первые там 100 байт и по ним можно определить тип раздела. Либо по магическому числу либо по структуре заголовка.

Как раз чтоб винда распознала - это не так сложно. Там системой все перекрывается распознание дисков и разделов. Я писал уже драйвера файловых систем, правда для линукса, но думаю что под виндовз не сильно отличается. Учитывая что можно вообще FUSE использовать, тогда ничего переписывать и не нужно будет.


 
Rule ©   (2009-10-27 18:09) [8]

Вот вопрос и состоит в том как вот получить энумератор девайсов (на это Игорь уже ответил, спасибо за это) и как прочитать с этого устройства первые n байт. Насколько я понимаю виндовз не очень посикс и устройства не обязаны являтся файлами. И читать с раздела как с файла не получится хотябы потому что у меня нет файлового дискриптора.

Вот как это прочитать ?


 
Игорь Шевченко ©   (2009-10-27 18:16) [9]


> и как прочитать с этого устройства первые n байт


CreateFile ("\\.\PhysicalDriveX",
где X - порядковый номер диска

получаешь доступ ко всему диску. Рассчитываешь первый блок нужного раздела по смещению в partition table, читаешь блок.

Если Windows монтирует этот раздел, как том (Voulme), то можно вызвать CreateFile с GUID-ом этого тома, тогда пересчитывать не придется.


 
Rule ©   (2009-10-27 19:25) [10]


> Игорь Шевченко ©   (27.10.09 18:16) [9]


ООО именно то что нада, огромное спасибо.
По вашей наводке нашел:
http://technet.microsoft.com/en-us/library/cc739412(WS.10).aspx
http://developer.apple.com/mac/library/technotes/tn2006/tn2166.html
http://en.wikipedia.org/wiki/GUID_Partition_Table

Мож кому пригодится.
Этого более чем более чем достаточно :-)



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

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
15-1256615376
d@nger
2009-10-27 06:49
2009.12.27
Cisco и модем


2-1257755267
night_light
2009-11-09 11:27
2009.12.27
не запускается отладчик одного из проектов


15-1256595468
Германн
2009-10-27 01:17
2009.12.27
Ищу эксперта.


2-1257749650
Alex_C
2009-11-09 09:54
2009.12.27
Скрыть кнопку на панели задач


2-1257822350
Kostas
2009-11-10 06:05
2009.12.27
MS Word 2000 - Работа с копированием текста.