IOCTL_MOUNTDEV_QUERY_UNIQUE_ID的唯一性

关于
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需要采用何种格式? 此外,这是设备ID还是卷ID?换句话说,这应该是每个媒体(例如CD)还是每个设备(CD驱动器)的唯一?     
已邀请:
这种结构在MS API中很常见 -
UniqueID[1]
变量只是一个占位符,实际上它被用作
UniqueId[UniqueIdLength]
变量。 每个介质和每个设备的ID都是唯一的 - 这取决于您是在与卷驱动程序还是设备类驱动程序进行通信。该ID旨在识别“可以安装的东西” - 例如, CD-ROM设备,固定磁盘分区或未分区的可移动磁盘。安装管理器使用ID a.o.查找之前安装此特定卷的位置,并在同一点重新安装它。     
来自MSDN 也许对这种结构存在误解。 我打电话给
DeviceIoControl(IOCTL_MOUNTDEV_QUERY_UNIQUE_ID)
并得到一个字符串作为与设备接口路径类似的格式,但它只是前缀4个字符的不同,然后它保存在注册表
HKLMSYSTEMMountedDevices
。     

要回复问题请先登录注册