Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизКак узнать таблицу разделов на дисках и вообще как это работает Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c