2013-05-20 24 views
0

This link在Ubuntu上說:「選項 - 新半串只改變序列號的上半部分,保持Windows使用的下半部分不變。」如何在Windows中獲得Volume ID的上半部分?

這表明卷的上半部分存在於磁盤上,有沒有什麼辦法可以在Windows上得到這個? (GetVolumeInformation只返回下半部分)。 Ubuntu用blkid顯示整個64位值。

注:

「這不是由Windows來定位已經被移動到另一個卷文件的卷UUID。」

這是指音量UUID,而不是我在這裏討論的音量Id。音量UUID的形式爲:\\.\Volume{7E899CB7-0079-11E1-BC4E-002219F6E9D9}

+0

卷ID的和其他相關的信息都存儲在註冊表中。您是否試圖從打開的文件句柄或路徑獲取卷ID? –

+0

@CaptainObvlious無論哪一種,問題是我發現的任何源代碼(編程或實用)只能提供低32位,而不是高32位。卷C:'也有這個問題。 – chacham15

回答

0

我想你想看看在

NTFS_VOLUME_DATA_BUFFER 

結構,DeviceIO命令:

FSCTL_GET_NTFS_VOLUME_DATA 

,功能DeviceIoControl()。我想你會在那裏找到你要找的東西。該NFTS_VOLUME_DATA_BUFFER的第一個成員被定義爲LARGE_INTEGER,這僅僅是一個的typedef:

typedef union _LARGE_INTEGER { 
    struct { 
     DWORD LowPart; 
     LONG HighPart; 
    }; 
    struct { 
     DWORD LowPart; 
     LONG HighPart; 
    } u; 
    LONGLONG QuadPart; 
} LARGE_INTEGER; 

讓我知道這是否有助於在所有...

相關問題