Привет ребята! Мне нужно по букве раздела определить его физ. расположение. т.е. вот такое multi(0)disk(0)rdisk(0)partition(1)
SPA +1 Зача решается через SetupAPI. Готового исходника нет, но логика следующая: 1. Перечисляем с помощью вышеназванных API все PCI устройства в поисках дискового контроллера по class id. 2. Перечисляем все накопители, которые висят на конкретном контроллере (опять же, SetupAPI это всё умеет). 3. Для каждого накопителя опрашиваем диспетчер разделов о точках монтирования (см. IOCTL_MOUNTMGR_*** в DDK), сравнивая букву раздела с той, которую отдаёт GetWindowsDirectory. 4. Когда путь совпал - первая цифра это номер канала контроллера, вторая - номер устройства на канале, третья - номер раздела. Собственно, квест выполнен.
multi(0)disk(0)rdisk(0)partition(1) - это первый раздел диска, обычно являющийся загрузочным. Разбираем таблицу разделов, находящуюся в 1) 0:0:1 2) ??????? 3) PROFIT! -)
Вообще-то буквы в Винде никак не привязаны к разделам и физическим накопителям: их можно свободно (ну, почти свободно) менять. Поэтому опираться на таблицу разделов попросту нельзя.
У меня лично было два физ-диска и через БИОС то один был первым, то второй. Ну а с буквами я вообще давно уже обращаюсь "свободно". Даже умудрялся без диска С жить и очень долгое время первый раздел имел букву С. Буква С для системного диска у меня - это исключение. Ну а если еще и Линукс стоит, то там букв нет! Что касается привязки букв и разделов, то тут все нормально. В реестре есть раздел MountedDevices - там гораздо больше можно найти : какая буква куда была привязана. Вынули хард, а там все осталось... Даже если букву заняли под другое - таблица разделов хранится. А если достать время записи параметра, то можно историю узнать.
Блин РЕДАКТИРОВАНИЕ !!! - первый раздел естественно был R (read only), там сидел ДОС для ремонта систем.
И вообще я не понял : зачем по букве определять ? Что мало утилит для чтения таблицы разделов? Я обычно использую Мой компьютер(правый клик)->Управление->Управление дисками Там вам в графике покажут буквы и разделы. Если разделы делали нормально, то все легко определяется : 1,2,3 и т.д. Раньше приходилось Парагон вызывать, но один добрый человек подсказал про "правый клик" - удобнА
Пардон меня уже в оффтопик занесло. Надо же программно пределить, видимо. Но все равно непонятно про буквы?