据我所知,Windows驱动程序(ftdisk)为它在系统上找到的每个卷创建对象"HardDiskVolume"并为其创建注册表记录:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
\??\Volume{GUID} = BINARY_DATA
Run Code Online (Sandbox Code Playgroud)
从那时起,卷被安装为 \??\Volume{GUID}
BINARY_DATA用于将此驱动器映射到\DosDevices\<DISK_NAME>同一注册表配置单元中,以便磁盘具有字母.
BINARY_DATA必须对于卷是唯一的,即使我把这个磁盘放到另一台PC上也不应该更改,对吧?
我的观点是:
我读过lpVolumeSerialNumber使用GetVolumeInformation.它只是长整数,看起来不像这样BINARY_DATA.
我相信 BINARY_DATA是函数来自lpVolumeSerialNumber(当卷格式化时由OS生成)和其他东西:
BINARY_DATA= F(VolumeSerialNumber, SOMETHING).
Run Code Online (Sandbox Code Playgroud)
什么是SOMETHING?
我已经阅读了MSDN和Russinovich/Solomon的书,但仍然无法得到它.
哦,我找到了.
它说"注册表存储在基本磁盘卷驱动器号和卷名的值中的数据是Windows NT 4样式磁盘签名和与卷关联的第一个分区的起始偏移量".
但什么是"Windows NT 4风格的磁盘签名"?
从这里:http: //www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resguide/diskover.mspx?mfr = true
那就是"每个硬盘的第一个扇区中的四字节磁盘签名"
所以我使用HxD工具,从我的BINARY_DATA中找到了这四个字节,我发现它在第1B0行和第08到0B列.
看起来互联网上还有一个人知道它:http: //www.pcreview.co.uk/forums/image-copy-drive-wont-boot-properly-t3761034.html))
因此,如果我更改磁盘上的MBR,它将丢失其信件:)
Joe*_*nte -1
其一,GUID 就是 GUID。它们只是随机生成的数字序列,出现重复条目的可能性非常低。我怀疑每次 Windows 启动时都会生成它,尽管我承认这是可能的。我从来没有注意到它发生变化,因为我不经常看到我的硬盘的 GUID
另外,您是否遵循 lpVolumeSerialNumber?如果没有,您可能会获得一个内存地址。匈牙利表示法“lp”==“长指针...”卷序列号本身看起来像一个 DWORD,一个 32 位整数
| 归档时间: |
|
| 查看次数: |
7282 次 |
| 最近记录: |