Как получить букву раздела?
От: monofilm  
Дата: 28.11.05 16:32
Оценка:
Возможно вы видели в файле boot.ini строку вида:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition RU" /fastdetect

У меня "multi(0)disk(0)rdisk(0)partition(1)" соответствует разделу С:\
Очень хотелось бы получить аналогичное представление для других разделов (D:\, E:\,...) и наоборот.

В мсдне ничего конкретного не обнаружил (может быть плохо искал?)

Спасибо.
Re: Как получить букву раздела?
От: ZZmiy  
Дата: 28.11.05 17:20
Оценка:
Здравствуйте, monofilm, Вы писали:

M>Возможно вы видели в файле boot.ini строку вида:

M>multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition RU" /fastdetect

M>У меня "multi(0)disk(0)rdisk(0)partition(1)" соответствует разделу С:\

M>Очень хотелось бы получить аналогичное представление для других разделов (D:\, E:\,...) и наоборот.

M>В мсдне ничего конкретного не обнаружил (может быть плохо искал?)


M>Спасибо.



Есть подозрение, что логические диски на том же винчестере будут иметь представление
multi(0)disk(0)rdisk(0)partition(2,3,4 и т.д.)
Например, в msdn

[msdn]
x86-Based and RISC-Based ARC Paths Comparison
The path to each Windows NT installation is described in a single line in the BOOT.INI file for x86-based computers, however, on RISC-based computers a set of four lines is used in the computer firmware BOOT- options to point to a single Windows NT installation. If there are multiple installations of Windows NT on your x86-based computer, the BOOT.INI has one ARC path for each installation in it. You are prompted with a boot menu during the boot process to choose the installation you want to boot.

There are two basic forms in which an ARC path can appear, one form starting with MULTI() and the other form starting with SCSI(). Both forms are used on x86-based computers, however, only the SCSI() form is used on RISC computers:


x86-Based Computers
The following are generic examples of two possible BOOT.INI ARC paths:

multi(X)disk(Y)rdisk(Z)partition(W)\<winnt_dir>

-or-

scsi(X)disk(Y)rdisk(Z)partition(W)\<winnt_dir>


where X, Y, Z, and W are numbers that identify the item to their left.

Both ARC-path examples above allow Windows NT find the %SystemRoot% directory to complete the boot process by loading files in that reside in that directory. For additional information, see the Differences Between The MULTI(X) And SCSI(X) Syntax And Application section below.


[/msdn]
The Creator had a lot of remarkably good ideas when he put the world together, but making it understandable hadn't been one of them. (c) Terry Pratchett
Re[2]: Как получить букву раздела?
От: monofilm  
Дата: 28.11.05 17:43
Оценка:
Здравствуйте, ZZmiy, Вы писали:

ZZ>Есть подозрение, что логические диски на том же винчестере будут иметь представление

ZZ>multi(0)disk(0)rdisk(0)partition(2,3,4 и т.д.)

Оно то, наверное, так и будет. Только вот, что делать если физически диск не один n они не обязательно IDE?
Re: Как получить букву раздела?
От: Pavel Dvorkin Россия  
Дата: 29.11.05 13:43
Оценка:
Здравствуйте, monofilm, Вы писали:

M>Возможно вы видели в файле boot.ini строку вида:

M>multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition RU" /fastdetect

M>У меня "multi(0)disk(0)rdisk(0)partition(1)" соответствует разделу С:\

M>Очень хотелось бы получить аналогичное представление для других разделов (D:\, E:\,...) и наоборот.

И C:\ и multi(0)disk(0)rdisk(0)partition(1) есть symbolic link в пространстве диспетчера объектов. Т.е это разнве формы ссылок на объекты.

Получить объект, соответствующий C:\ несложно — QueryDosDevice.
Получить объект, соответствующий multi(0)disk(0)rdisk(0)partition(1) сложнее. Надо использовать недокументированные Nt* функции . Подробности в книге Коберниченко "Недокументированные возможности Windows NT", там же и код приведен для получения этих symbolic link и определения их объектов. Если код интересует — пиши на e-mail, вышлю. Книги в электронной форме у меня нет.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.