Microsoft 定义的 USB 描述符
Microsoft 提供一组专有设备类和 USB 描述符,称为 Microsoft 操作系统描述符 (MOD)。本主题将概述 MOD。
由于包含多种硬件功能的设备快速涌现,很多制造商发现他们的设备并不完全符合任何当前的通用串行总线 (USB) 设备类。这导致这些制造商失去了 USB 技术一个最具吸引力的特性:驱动程序软件的标准化(根据设备的类)。Microsoft Windows 为大多数属于标准 USB 设备类的设备提供本机类驱动程序,这些驱动程序让最终用户可以轻松地将此类设备附加到计算机,无需安装特殊的软件。
为满足其设备不符合当前 USB 设备类集合的制造商的需求,Microsoft Corporation 开发了一组专有设备类和 USB 描述符,称之为 Microsoft 操作系统描述符 (MOD)。应用程序和系统软件都可以通过查询来确定设备是否支持 MOD,从而识别哪些设备属于 Microsoft 定义的设备类。
Microsoft 操作系统描述符除了支持专有设备类之外,还有重要的用途。具体来说,它们提供的机制可发挥设备固件的最大优势。有了 Microsoft 操作系统描述符的帮助,你可以使用固件来交付帮助文件、特殊图标、统一资源定位符 (URL)、注册表设置,以及简化安装和提高客户满意度所需的其他数据。在某些情况下,你可以不使用诸如软盘和 CD 之类的存储介质,这简化了升级内容的交付和支持。
操作系统支持
Windows XP Service Pack 1、Windows Server 2003、Windows Vista、Windows Server 2008 和 Windows 7 支持 Microsoft 操作系统描述符。
为什么 Windows 向索引 0xEE 发出字符串描述符请求?
支持 Microsoft 操作系统描述符的设备必须在固件中的固定字符串索引 0xEE 处存储一个特殊的 USB 字符串描述符。这个字符串描述符称为 Microsoft 操作系统字符串描述符。
当一个新设备首次连接到计算机时,支持 Microsoft 操作系统描述符的操作系统将请求位于索引 0xEE 处的字符串描述符。Microsoft 操作系统字符串描述符包含一个嵌入式签名字段,由操作系统用来区分它与索引 0xEE 处可能出现的其他字符串。如果在索引 0xEE 处存在一个包含适当签名字段的字符串描述符,就向操作系统指示该设备支持 Microsoft 操作系统描述符。Microsoft 操作系统字符串描述符也向操作系统提供版本信息。
在设备枚举期间(设备驱动程序加载之前),操作系统在索引 0xEE 处查询字符串描述符,这可能会导致一些设备不能正常工作。支持 Microsoft 操作系统描述符的 Windows 操作系统版本不支持这样的设备。
如果一个设备在索引 0xEE 处不包含有效的字符串描述符,那么它必须用一个隔栏(stall)数据包(即一个包含 STALL 类型数据包标识符的数据包)进行响应,通用串行总线规范的“请求错误”一节中描述了该数据包。如果设备不用隔栏数据包进行响应,系统将向设备发出一个单端零重置数据包,帮助它从已停止状态恢复(仅 Windows XP)。
操作系统从设备请求一个 Microsoft 操作系统描述符之后,会创建以下注册表键:
HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr
osvc
关于该键下的注册表项,请参阅 USB 设备注册表项。
有关其他信息,请参阅 Microsoft 操作系统描述符。
注册表项
Send comments about this topic to Microsoft
Build date: 6/25/2013