2013-08-22 62 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。

相關問題