【问题标题】:How do I get the upper half of the Volume id in Windows?如何在 Windows 中获取 Volume id 的上半部分?
【发布时间】:2013-05-20 04:52:42
【问题描述】:

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

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

注意事项:

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

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

【问题讨论】:

  • 卷 ID 和其他相关信息存储在注册表中。您是否尝试从打开的文件句柄或路径中获取卷 ID?
  • @CaptainObvlious 任何一个,问题是我找到的任何源(程序或实用程序)只提供低 32 位,而不是高 32。 vol C:也有这个问题。

标签: c++ windows ubuntu volume


【解决方案1】:

我想你想看看

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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多