|
Asm/C++/Delphi/Py/PHP/VBA
|
||
Disk, volume, partition05.07.2018, 14:55. Показов 7882. Ответов 17
Метки нет (Все метки)
Всем привет.
Хочу прояснить для себя разницу некоторых терминов. Возьмём к примеру IOCTL_DISK_GET_LENGTH_INFO:
А в чём разница между partition и volume? Если она, конечно, есть... И как открыть partition или volume? Использую CreateFile, задаю \Device\Harddisk0\Partition1 – ошибка (не найден), задаю \\?\Device\Harddisk0\Partition1 – аналогично (\\.\ тоже). В инете нахожу какие-то \Device\Harddisk0\DR0 и т.п. – тоже не работает (что это такое вообще?) Добавлено через 4 минуты И какие вообще устройства (диски, разделы) можно задать для CreateFile кроме \\.\PhysycalDriveX, \\.\CdRomX и \\.\X: ? Scsi ещё вроде были (только как их задать – х/з). Добавлено через 5 минут То, что выдаёт FindFirstVolume/FindNextVolume в формате \\?\Volume{GUID} – это ли не есть разделы (или тома)?
1
|
||
| 05.07.2018, 14:55 | |
|
Ответы с готовыми решениями:
17
Couldn't open drive multi(0)disk(0)rdisk(0)partition(1) после восстановления Акронисом Couldn't open drive multi(0) disk(0) rdisk(0) partition (1) сразу после загрузки с флешки Invalid partition Invalid partition File system type Unknown |
|
Эксперт Hardware
|
|||
| 05.07.2018, 17:41 | |||
|
Partition - это раздел, а Volume - это том. Раздел является контейнером для томов, и если диск не разделён на части, то это одно и тоже. Если диск разделён, то Partition не имеет файловой системы, поскольку том(Ц) может быть NTFS, а том(Д) - FAT. Каждому из них можно задать метку тома 'Volume-Label'. Для томов советуют использовать OPEN_EXISTING и FILE_SHARE_WRITE, указывая путь по типу диска[А:] - но у меня не работает.
1
|
|||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 05.07.2018, 19:14 [ТС] | |||
|
Но я думаю, может, ещё какие-то варианты есть. Фигурирует иногда "HarddiskX\PartitionY" (не понятно только как правильно полностью писать и с где использовать можно), но это не работает у меня.
1
|
|||
|
Эксперт Hardware
|
|||
| 05.07.2018, 19:39 | |||
Сообщение было отмечено Mikl___ как решение
Решениедиск открывает только по PhysicalDrive GUID можно считать с реестра, там и диски перечисляются как 0,1,2 и т.д заходишь в папку нуль, и смотришь, какие там есть GUID
1
|
|||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||
| 05.07.2018, 20:14 [ТС] | ||||
CreateFile('\\.\C:', 0, 0, nil, OPEN_EXISTING, 0, 0);Добавлено через 7 минут Я вижу только жёсткие диски в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Services\Disk\Enum. А соответствующие им тома или разделы-то где?
2
|
||||
|
Эксперт Hardware
|
|||
| 05.07.2018, 21:58 | |||
Сообщение было отмечено Mikl___ как решение
Решениено всё-равно разделы не определяет, а только диски - и Ц, и Д возвращает одно-и-тоже. я сейчас посмотрел, там оказывается ид класса устройства, поэтому у всех одинаковый есть ещё 'HKLM\SYSTEM\MountedDevices', который возвращает то-что нужно, но опять сваленый в кучу. В реестре точно где-то есть, просто нужно найти ветку. А вообще, много-же есть вариантов.. Создать dat-файл, и сбросить в него инфу через WMI. Или-же запустив шелом ком-строку, передать параметром 'Diskpart' (поддерживает сценарии). Вот тебе и guid, и вообще всё-что возможно для каждого диска/раздела/сектора/байта - видит и MBR, и GPT. Знает даже о смещениях начала каждого раздела на диске (63 или какой сектор). Дат-файл можно сделать определённого формата, чтобы импортировать с него данные для CreateFile и IoControl.
1
|
|||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 06.07.2018, 17:24 [ТС] | |||
|
Но и смысла особого нет, когда можно так же через DeviceIoControl найти всё это. Если бы там были перечислены все разделы/тома на этом диске... Использовать стороннюю программу, чтобы получить данные для своей программы. Потому что я не знаю как это закодить самому
0
|
|||
|
Эксперт Hardware
|
||
| 06.07.2018, 18:18 | ||
Сообщение было отмечено Mikl___ как решение
Решение
1
|
||
|
Модератор
|
|
| 07.08.2018, 09:29 | |
|
В последних версиях добавились ещё виртуальные диски ( VHD ).
Тома с файловой системой могли распологаться на нескольких физических дисках, использовать программное зеркалирование и т.п. Эта тема ближе скорее системным инженерам, чем низкоуровневым программистам. Когда-то NT нацеливалась не на писишки, а на приблизительно такие машины ftp://ftp.linux-mips.org/pub/l... scspec.pdf На 100-й странице те, кто редактировал BOOT.INI для старых версий NT, найдут знакомые строчки.
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 18.08.2018, 09:34 | ||
|
Так вот, что в дос, что в выни диски поворачиваются к программисту двумя сторонами - как физические диски и как логические диски. А раздел, а о нем даже думать не надо, это дело десятое, это уже внутренняя кухня того, как физические диски превращаются в логические. О них нужно думать только когда диск разбиваешь. А после о разделах просто забудь. Они - вспомогательное понятие процесса разбивки физического диска на логические. Раздел как самостоятельная сущность возникает, только если у него другая файловая система или ее вовсе нет, буква тома вынью ему не была назначена, т.е. логическим диском он так и не стал. Вот тогда он и не физический диск и не логический, а раздел. Типа логический диск недоделанный. Во всяком случае эти понятия я так по полочкам в мозгу разложил. Появление виртуальных дисков в этом понятийном аппарате ничего не меняет. Логический диск ведь, по идее, может быть как частью одного физического, так и объединением нескольких физических. Да и у CERT-а еще в стародавние времена была файловая система, объединяющая даже не несколько дисков в одно целое, а тысячи UNIX-овых компьютеров по всему миру в единое целое. Ядерные исследования, они такие. Не помню только как называлась, я на комп из этой системы, скажем так, как непрошенный гость залез. Помню, что каталоги в ней именовались DNS-именами компьютеров, а как внутрь по cd зашел, так ты на том компе и видишь его подкаталоги. Ну вот теперь и Майкрософт типа до чего-то отдаленно подобного доросла.
3
|
||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||
| 18.08.2018, 10:38 [ТС] | ||
|
И как их открыть, используя нумерацию (и как определить конечный номер, если они, конечно, всегда последовательно идут от 0 до X). Есть PhysicalDrive - физический диск, он же Harddisk, как я понимаю. Есть Partition, а есть Volume, что по сути, наверное, одно и то же в рамках SDK. Вот только, повторюсь, как не вписывай эти Harddisk и Partition в CreateFile, ничего не выходит, только \\.\PhysicalDriveX и \\?\Volume{GUID} работают... ну и \\.\C:. Первый вариант ок, вполне удобен. А вот со вторым (где GUID) вопрос... К тому же, не совсем ясно, если есть PhysicalDrive4, может не существовать PhysicalDrive3 ? Добавлено через 2 минуты Но как перечислять эти \\?\Volume я разобрался (FindFirstVolume/FindNextVolume/FindVolumeClose)...
1
|
||
|
Модератор
|
||||||||||||
| 19.08.2018, 07:24 | ||||||||||||
VOL ? ![]() Помните?
DIR в Командной строке увидеть что-то вроде
Когда IBM начала внедрять сменные и не сменяемые пакеты магнитных дисков, технология томов с метками/серийными номерами была уже отработана на лентах.
2
|
||||||||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||||
| 21.08.2018, 06:40 | ||||||
|
Enter current Volume Label for drive d: обратите внимание, не для volume d: , а для drive d:. Метка тома ставилась не на том, а на диск. В случае жесткого диска на логический, а для дискеты, что логический, что физический, все едино. Но ведь на диск. Добавлено через 4 минуты Добавлено через 11 минут Добавлено через 7 минут
0
|
||||||
|
Модератор
|
|
| 21.08.2018, 11:30 | |
|
Может, конечно, быть и сменный Drive. Например USB FDD.
В этот может быть вставлен физический гибкий сменный диск. На этом диске может распологаться том с файловой системой, которому при высокоуровневом форматировании или позже могли присвоить метку. Добавлено через 1 час 57 минут Авторы пишут о многодисковых томах и мнототомных дисках в NT с картинками https://docs.microsoft.com/en-... 5(v=ws.10) https://docs.microsoft.com/en-... 2(v=ws.10)
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 21.08.2018, 11:31 [ТС] | |||
|
А меня интересует кол-во физ. дисков, в частности.
0
|
|||
|
Модератор
|
|
| 21.08.2018, 11:54 | |
|
Буквы удаляются и назначаются томам на достаточно высоком уровне.
https://docs.microsoft.com/en-... ssignments
0
|
|
| 21.08.2018, 11:54 | |
|
Помогаю со студенческими работами здесь
18
Как убрать ошибку - ERROR: No boot disk has been detected or the disk has failed Ошибка Disk Boot Failure, Insert System Disk and Press Enter Ошибка Disk Boot Failure Insert system disk and press enter Ошибка: disk boot failure insert system disk and press enter
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|