【发布时间】:2011-07-31 04:59:10
【问题描述】:
IOCTL_MOUNTDEV_QUERY_UNIQUE_ID 上的文档有点混乱……究竟应该在MOUNTDEV_UNIQUE_ID 结构中返回什么类型的 ID?
文档
typedef struct _MOUNTDEV_UNIQUE_ID {
USHORT UniqueIdLength;
UCHAR UniqueId[1];
} MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID;
说:
UniqueIdLength
- 包含唯一卷 ID 的长度。
UniqueId
- 包含唯一的卷 ID。唯一卷名的格式为
"\??\Volume{GUID}\",其中 GUID 是标识卷的全局唯一标识符。
但是,这里有些奇怪:UniqueId 的确切格式应该是什么?如果它打算采用\??\Volume{GUID}\ 格式,那么UniqueIdLength 字段的意义何在——它们的大小不都一样吗?否则,设备ID需要采用什么格式?
此外,这是 device ID 还是 volume ID?换句话说,这应该是每个媒介(例如CD)还是每个设备(CD驱动器)都是唯一的?
【问题讨论】:
-
这里对
UniqueId的定义是错误的。当前文档具有正确的定义:“包含唯一卷 ID 作为字节数组”。在某些情况下,卷 GUID 名称直接基于唯一卷 ID,但在其他情况下,唯一 ID 必须映射到“MountedDevices”键中的卷 GUID 名称。
标签: winapi ioctl mount-point