Насколько я понимаю, драйвер Windows (ftdisk) создает объект "HardDiskVolume" для каждого тома, который он находит в системе, и создает для него запись реестра:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
\??\Volume{GUID} = BINARY_DATA
С этого момента объем монтируется как \??\Volume{GUID}
BINARY_DATA
используется для сопоставления этого диска с \DosDevices\<DISK_NAME>
в том же куске реестра, что и диск имеет букву.
BINARY_DATA должен быть уникальным для тома и не должен изменяться, даже если я поместил этот диск в другой компьютер, не так ли?
Мой вопрос:
- что здесь GUID? Это случайное число, генерируемое ftdisk каждый раз, когда загружаются окна?
- Как Windows вычисляет 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-properly-t3761034.html))
Итак, если я изменю MBR на диске, он потеряет его письмо:)