On This PageWindows 操作系统本机支持符合通用串行总线 (USB) 规范的设备和系统。本文为驱动程序开发人员提供了有关 USB 堆栈和 USB 支持功能的常见问题的答案。 此 FAQ 适合刚开始为 Windows 开发 USB 设备和驱动程序的开发人员。您可以在以下网址找到中级 FAQ:. 其他有关 USB 设备和驱动程序支持的文档可以在 Windows Driver Kit (WDK) 的当前版本、MSDN 开发人员资料库和 Windows USB 网站. 我的 PC 有 USB 2.0 端口吗?大多数 2002 年以后出售的台式机和便携计算机都支持 USB 2.0。支持 USB 2.0 表示该计算机拥有一个或多个 USB 增强的主机控制器。要确定您的计算机是否拥有 USB 增强的主机控制器,可按照以下步骤操作:
我需要为增强的 (USB 2.0) 主控制器安装驱动程序吗?Windows 的以下版本支持 USB 2.0 增强的主控制器: 注意: 由于 Windows 2000 和 Windows XP 是在 USB 2.0 硬件可用之前发布的,所以在服务包中为这些操作系统发布驱动程序。 要安装驱动程序:
有关 USB 2.0 在 Windows XP Service Pack 1 中的可用性,请参阅 Microsoft 知识库文章 329632 "How to obtain and to install USB 2.0 drivers in Windows XP Service Pack 1"(如何获取并在 Windows XP Service Pack 1 中安装 USB 2.0 驱动程序),网址为:. 注意 “高速 USB 2.0 设备”和“USB 2.0 设备”有区别吗?有区别。USB 2.0 规范包含三种速度模式: USB 2.0 规范增加了高速支持,同时保留了对低速和全速的支持。 为什么我的系统上有好几个主控制器?运行 Windows 的计算机上的大多数主控制器符合三种 USB 主控制器规范之一。但是,每种规范仅支持 USB 2.0 设备速度的一个子集,如表 1 所归纳的。
支持 USB 2.0 的主板必须至少拥有一个 USB 增强的主控制器 (EHCI)。它们通常也有一个或多个 UHCI 或 OHCI 控制器来支持全速和低速设备。 为了确保兼容性,独立设备供应商必须根据所有主控制器标准和集线器测试其设备。 我可以禁用 "HI-SPEED USB Device plugged into non-HI-SPEED port"(高速 USB 设备插入了非高速端口)提示吗?当一个高速 USB 2.0 设备被插入不支持高速的 USB 端口时,Windows XP 及 Windows 的更高版本会弹出一个提示。为了从设备获得{zj0}的性能,用户必须单击该提示并遵循屏幕上的操作指南。 阻止此通知出现的{zj0}方式是安装一个符合高速标准的 USB 2.0 集线器,或者购买一块 USB 2.0 EHCI Peripheral Component Interconnect (PCI) 内置卡。然后您可以将一个 USB 2.0 设备插入这些启用了高速的端口。2003 以后出售的大多数系统已经拥有启用了高速的 USB 2.0 端口。 要禁用该提示,可按照以下步骤操作: 注意 有关 Windows XP Service Pack 1 中的 USB 2.0 支持的更多信息,请参阅 Microsoft 知识库文章 329632 "How to obtain and to install USB 2.0 drivers in Windows XP Service Pack 1"(如何获取并在 Windows XP Service Pack 1 中安装 USB 2.0 驱动程序),网址为:. bcdUSB 字段可使用哪些值?标准设备描述符中的 bcdUSB 字段必须准确报告 USB 规范版本号,该设备及其描述符都符合此版本号。 Windows 操作系统在此字段中接受以下值: 注意 无法正确报告这些值会导致设备无法通过 Windows 徽标测试。有关这些测试的详细信息,请参阅. 在一个硬件中可以有一个复合设备 (composite device) 和一个混合设备 (compound device) 吗?是的。Microsoft Natural Keyboard Pro(拥有一个具有三个端口、总线供电的集线器)就是一个混合多功能 USB 设备的例子,它拥有一个连接到端口 1 的复合设备。其他两个端口向最终用户开放。 连接到端口 1 的设备是一个低速复合设备。该设备具有两个接口,均符合 USB Standard Device Class Definition for Human Interface Devices (HID)。该复合设备提供两个 HID 接口,而不是通过使用{dj0}集合在单个 HID 接口上复用所有集合。选择此设计是为了兼容早期的 BIOS。 当把一些 USB 设备转移到新端口后,为什么会重新安装?在 Windows 2000 及更高版本的操作系统中,当 USB 设备从一个端口转移到另一个端口时,会创建一个新的物理设备对象 (PDO)。如果该硬件报告一个{wy}的 USB 序列号,则不会创建新的 PDO。 为了重用同一个 PDO,并确保无论设备被重新插入同一个端口还是一个新端口,设备体验都不改变,硬件供应商必须在设备中存储一个序列号。根据 Windows 徽标计划的要求,对于共享同一个设备安装标识符的所有设备,该序列号必须是{wy}的。 有用于高速产品打包的设计建议列表吗?USB-IF 已经和 Microsoft 以及其他 USB-IF 成员公司一起合作开发了一个建议列表,用于独立硬件供应商包含在他们的打包中。USB 网站上有更多可用的信息,网址为:. 我如何识别 USB 核心堆栈的驱动程序版本?要识别计算机上的驱动程序 (.sys) 文件的日期和版本号,可按照以下步骤操作: 以下是一列 Windows XP 上的核心 USB 驱动程序: 有关每个驱动程序的其他信息,请参阅 WDK。 我从何处可以找到其他有关 USB 的 FAQ?请参阅 USB-IF FAQ 页面,网址为:. Microsoft 支持什么 USB DWG 类?Windows 支持多个 USB 设备工作组 (DWG) 已定义的 USB 类。有关 USB 类规范和类代码的当前列表,请访问 USB DWG 网站:. 表 2 突出显示了 Windows 中支持的 USB DWG 类,也标识了支持每个类的 Windows 版本。 表 2:Windows 中支持的 USB DWG 类
*加载此驱动程序需要特殊的指令,因为此驱动程序可能是在操作系统后发布的。 Windows 类驱动程序可能不支持 DWG 类规范中描述的所有功能。有关在类规范中实现功能的其他详细信息,请参阅 WDK。 对于自定义 USB 设备应该使用什么设备安装程序类?Microsoft 为大多数设备类型提供了系统定义的安装程序类。系统定义的安装程序类 GUID 在 Devguid.h 中定义。有关其他信息,请参阅 WDK。如果要开发一个 Microsoft 还没有为其提供现有类 GUID 的设备类型,可以定义一个新的设备安装程序类。 有关 Windows 类 GUID 的列表,请参阅 WDK 中的 "System-Supplied Device Setup Classes"(系统提供的设备安装程序类),网址为:. 重要事项:USB 团队要求独立硬件供应商使用与 USB 设备类型(而不是集线器类型)相关的安装程序类。安装程序类 "USB"(ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}) 仅为 USB 主控制器和 USB 集线器保留,而且不能用于其他设备类别。不正确地使用此安装程序类可能导致设备驱动程序无法通过 Windows 徽标测试。 当我插入某些 USB 设备的时候,为什么我的 CPU 不会进入 C3?当连接一个 USB 设备时,USB 主控制器会轮询框架计划程序,这是一个直接内存访问 (DMA) 总线主控操作。“中断事件”(比如总线主控流量、中断)或一些其他系统活动使 CPU 离开 C3 模式,因为根据定义,当 CPU 的缓存处于 C3 模式时,它是不能被搜索的。 解决此问题的方法有两种:
哪些 USB 类驱动程序支持“选择性挂起”?以下是一个 Windows XP 和更高版本操作系统中支持“选择性挂起”的 USB 类的列表:
如果有足够多的原始设备制造商提出要求,Microsoft 可能考虑为其他类驱动程序支持选择性挂起。现在也正在研究未来的硬件体系结构(CPU、芯片组以及操作系统),以解决此问题。 为什么 USB 设备不能将 Windows 从 S3 唤醒?USB 设备无法将 Windows 从 S3 唤醒有很多原因,其中包括:
有关其他信息,请参阅 Windows XP 和 Windows 更高版本的“帮助和支持中心”中的“USB 疑难解答”。 |