如何在Windows中获取Volume id的上半部分?

时间:2013-05-20 04:52:43

标签: c++ windows ubuntu volume

Ubuntu的

This link说:“选项--new-half-serial只会更改序列号的上半部分,保持Windows使用的下半部分不变。”

这表明磁盘上存在Volume Id的上半部分,有没有办法在Windows中实现? (GetVolumeInformation仅返回下半部分)。 Ubuntu使用blkid显示整个64位值。

注意:

“这不是Windows用来查找已移动到另一个卷的文件的卷UUID。”

这是指卷UUID,而不是我在这里讨论的卷ID。卷UUID的格式为:\\.\Volume{7E899CB7-0079-11E1-BC4E-002219F6E9D9}

1 个答案:

答案 0 :(得分: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;

让我知道这是否有帮助......