Насколько я понимаю, драйвер Windows (ftdisk) создает объект "HardDiskVolume" для каждого тома, который он находит в системе, и создает для него запись в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
\??\Volume{GUID} = BINARY_DATA
С этого момента том монтируется как \ ?? \ Volume {GUID}
BINARY_DATA
используется для сопоставления этого диска с \ DosDevices \
в том же кусте реестра, чтобы у диска была буква.
BINARY_DATA должен быть уникальным для тома и не должен изменяться, даже если я вставлю этот диск в другой компьютер, верно?
Мой вопрос:
Я прочитал lpVolumeSerialNumber
, используя GetVolumeInformation
. Это просто длинное целое число и не выглядит так BINARY_DATA
.
Я считаю, что BINARY_DATA
- это функция из lpVolumeSerialNumber
(генерируется ОС при форматировании тома) и кое-что еще:
BINARY_DATA= F(VolumeSerialNumber, SOMETHING).
Что ЧТО ТАКОЕ?
Я читал MSDN и Книга Руссиновича / Соломона уже есть и до сих пор не может ее достать ..
О, я нашел.
В нем говорится: «Данные, которые реестр хранит в значениях букв дисков и имен томов базового тома, - это подпись диска в стиле Windows NT 4 и начальное смещение первого раздела, связанного с томом».
но что такое «подпись диска в стиле Windows NT 4»?
То есть «Четырехбайтовая подпись диска, которая находится в первом секторе каждого жесткого диска»
Итак, я использовал инструмент HxD и нашел эти четыре байта из моих BINARY_DATA я нашел его в строке 1B0 и столбцах с 08 по 0B.
Похоже, в Интернете есть еще один человек, который знает об этом: http://www.pcreview.co.uk/forums/image-copy-drive-wont-boot- правильно-t3761034.html ))
Поэтому, если я изменю MBR на диске, он потеряет свою букву :)