2013-08-22 61 views
0

如何正确识别物理驱动器和计算机中的分区?我试过用GetVolumeInformation中的VOLUME序列号,并且很震惊地看到它返回一个NUMBER而不是一个字母数字值?为什么GetVolumeInformation为序列号返回一个int值?

[DllImport("Kernel32.dll", SetLastError = true)] 
extern static bool GetVolumeInformation(string vol, StringBuilder name, int nameSize, out uint serialNum, out uint maxNameLen, out uint flags, StringBuilder fileSysName, int fileSysNameSize); 

我需要知道USB拇指驱动器或CD或DVD或硬盘驱动器连接到另一台计算机时是同一个物理设备。即使在用户重命名或更改驱动器号后,我也需要知道分区或卷是否相同。

回答

1

它还应该返回什么?它只是格式化时文件系统分配的32位数字。

如果你想拥有它的格式是什么样的回报dir,只需使用

serialNumber.ToString("X8"); 
1

你混淆了两个不同的东西。文档说:

lpVolumeSerialNumber [出,可选]

此函数返回的是,当硬盘被格式化操作系统分配卷序列号。

因此,这是操作系统分配的序列号。它赋予它,我敢肯定,它知道正确的格式,以在返回它

它接着说:

以编程方式获取硬盘序列号,制造商分配,使用Windows Management Instrumentation(WMI)Win32_PhysicalMedia属性的SerialNumber。

相关问题