为什么此代码生成不同的数字?

时间:2010-05-20 08:23:11

标签: hash cpu uniqueidentifier hard-drive

我有这个功能,可以为硬盘和CPU组合创建一个唯一的编号。

    GetVolumeInformation(drv, szNameBuffer, 256, &dwHddUnique, NULL, NULL, NULL, NULL);

    SYSTEM_INFO si;
    GetSystemInfo(&si);

    dwProcessorUnique = si.dwProcessorType + si.wProcessorArchitecture + si.wProcessorRevision;
    dwUniqueKey = dwProcessorUnique + dwHddUnique;

如果我格式化硬盘并安装新的Windows,它会返回不同的数字。任何想法,为什么?

谢谢。

编辑:

好的,得到它(http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx):

  

此函数返回音量   操作序列号   系统在硬盘分配时分配   格式化。以编程方式获取   硬盘的序列号   制造商指定,使用Windows   管理仪器(WMI)   Win32_PhysicalMedia属性   的SerialNumber。

在网上发布我的问题之前,我应该做更多的研究。很抱歉打扰你,让我们把它放在这里,万一其他人都需要它。

1 个答案:

答案 0 :(得分:0)

也许是因为当您格式化硬盘时,它会为它生成一个新的唯一UUID? (所以dwHddUnique会有所不同)