USB常见问题_shadowsing123的空间_百度空间
*
On This Page

Windows 操作系统本机支持符合通用串行总线 (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 增强的主机控制器,可按照以下步骤操作:

1.

启动“设备管理器”。
在 Windows Vista 或 Windows Server 2008 中,单击开始,在所有程序下,在开始搜索文本框中,键入:
devmgmt.msc
用户帐户控制对话框出现时,单击继续,打开“设备管理器”。
或者,
在 Windows 的较早版本中,单击开始,单击运行,在运行对话框中,键入:
devmgmt.msc

2.

在“设备管理器”窗口中,展开通用串行总线控制器节点。寻找标题中有单词 "Enhanced" 的主控制器。如果能找到,那么该系统拥有符合 USB 2.0 的端口,以及必需的主控制器驱动程序。

Figure

图 1:加载了驱动程序的增强的主控制器

3.

如果您在第 2 步中未找到增强的主控制器,那么展开其他设备节点,并寻找通用串行总线 (USB) 控制器。如果能找到,那么该系统拥有符合 USB 2.0 的端口,但是必须安装该主控制器的驱动程序。如果未发现该项,那么该系统没有 USB 2.0 端口。

Figure

图 2:未加载驱动程序的增强的主控制器

我需要为增强的 (USB 2.0) 主控制器安装驱动程序吗?

Windows 的以下版本支持 USB 2.0 增强的主控制器:

注意: 由于 Windows 2000 和 Windows XP 是在 USB 2.0 硬件可用之前发布的,所以在服务包中为这些操作系统发布驱动程序。

要安装驱动程序:

1.

按照{dy}个问题的答案中描述的步骤确认您的计算机是否拥有 USB 2.0 端口,以及是否需要为该增强的主控制器安装驱动程序。

2.

在“设备管理器”窗口,按{dy}个问题中介绍的步骤展开其他设备区域,然后双击通用串行总线 (USB) 控制器

3.

属性对话框的常规选项卡上,单击重新安装驱动程序

Figure

图 3. 无驱动程序的 EHCI 的“属性”窗口

4.

在“添加新硬件向导”中,选择自动安装软件(推荐),然后单击下一步。继续运行向导,接受所有默认选项,直到到达向导的{zh1}一个页面,然后单击完成。可能会要求您重新启动计算机来完成安装。

有关 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 驱动程序),网址为:.

注意
为了确保您的机器安装了{zx1}的更新,请定期访问 Windows Update。

“高速 USB 2.0 设备”和“USB 2.0 设备”有区别吗?

有区别。USB 2.0 规范包含三种速度模式:

USB 2.0 规范增加了高速支持,同时保留了对低速和全速的支持。

为什么我的系统上有好几个主控制器?

运行 Windows 的计算机上的大多数主控制器符合三种 USB 主控制器规范之一。但是,每种规范仅支持 USB 2.0 设备速度的一个子集,如表 1 所归纳的。

表 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 端口。

要禁用该提示,可按照以下步骤操作:

注意
按照此步骤禁用所有 USB 提示,不仅仅是“高速 USB 设备插入了非高速端口”。

有关 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 操作系统在此字段中接受以下值:

注意
所有 USB 集线器必须符合 USB 1.1 或更高规范。它们不应该在 bcdUSB 字段中报告 0x0100。

无法正确报告这些值会导致设备无法通过 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 类

类规范 bDeviceClass 代码 驱动程序名称 Windows 支持

蓝牙类

0xE0

Bthusb.sys

Windows Vista
Windows XP

芯片/智能卡接口设备 (CCID)

0x0B

Usbccid.sys

Windows Server 2008
Windows Vista
Windows Server 2003*
Windows XP*
Windows 2000*

集线器类

0x09

Usbhub.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

人体学接口设备 (HID)

0x03

Hidusb.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

海量存储类 (MSC)

0x08

Usbstor.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

打印类

0x07

Usbprint.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

扫描/图像处理 (PTP)

0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP

Windows 2000

媒体传输 (MTP)

0x06

WpdUsb.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP

USB 音频类

0x01

Usbaudio.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

调制解调器类 (CDC)

0x02

Usbser.sys

Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows 2000

视频类 (UVC)

0x0E

Usbvideo.sys

Windows Vista
Windows XP*

*加载此驱动程序需要特殊的指令,因为此驱动程序可能是在操作系统后发布的。

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 读取器删除存储介质时,USB 读取器可以模拟一个电子断开,并在该介质重新插入时重新连接。在这种情况下可以出现 C3 转换,因为主控制器上没有 USB 设备。

Selective Suspend(选择性挂起)。
Windows XP 及更高版本操作系统中{wy}可用的备用方式是支持 USB Selective Suspend(选择性挂起)。此功能让驱动程序在其控制的 USB 设备变得空闲时将该设备挂起,即使系统本身仍处于全功率运行状态 (S0)。
如果所有 USB 功能驱动程序支持“选择性挂起”,该功能尤其强大。即使只有一个驱动程序不支持它,CPU 也无法进入 C3 模式。
有关“选择性挂起”的其他信息,请参阅 WDK。

哪些 USB 类驱动程序支持“选择性挂起”?

以下是一个 Windows XP 和更高版本操作系统中支持“选择性挂起”的 USB 类的列表:

Usbhub.sys
当没有设备连接到该驱动程序,或者当连接到该集线器的所有设备可以选择性挂起时,此驱动程序可以选择性挂起一个根集线器或外部集线器。

Hidusb.sys
此驱动程序可以选择性挂起一个 HID 设备。当所有设备状态改变时,由用户负责触发远程唤醒信号。要启用 HID 堆栈中的“选择性挂起”,该设备的特定 VID+PID 的 SelectiveSuspendEnabled 注册表值必须启用。例如,请参阅 Input.inf。

Bthusb.sys
此驱动程序可以选择性挂起运行 Windows XP Service Pack 2 及 Windows 更高版本的计算机上的设备。该驱动程序要求蓝牙无线在配置描述符中设置自我供电和远程唤醒位。当没有活动的蓝牙连接存在时,该驱动程序会选择性挂起蓝牙无线。

Usbser.sys
当没有活动调制解调器连接存在时,该驱动程序会选择性挂起。

如果有足够多的原始设备制造商提出要求,Microsoft 可能考虑为其他类驱动程序支持选择性挂起。现在也正在研究未来的硬件体系结构(CPU、芯片组以及操作系统),以解决此问题。

为什么 USB 设备不能将 Windows 从 S3 唤醒?

USB 设备无法将 Windows 从 S3 唤醒有很多原因,其中包括:

不正确的 BIOS。
确认计算机上是否安装了{zx1}的 BIOS。要获得计算机{zx1}的 BIOS 修改,请访问 OEM 或 ODM 的网站。

不启用唤醒的 BIOS。
一些 BIOS 可以禁用从 S3 和 S4 唤醒。确认该 BIOS 是否启用了从 S3 唤醒。

USBBIOSx 注册表键未设置。
全新安装的 Windows XP 没有 USBBIOSx 注册表键。如果 OEM 或 ODM 确认该 BIOS 可以从 S3 唤醒,则必须将此注册表键设置为 0x00 并重新启动计算机。

有关其他信息,请参阅 Windows XP 和 Windows 更高版本的“帮助和支持中心”中的“USB 疑难解答”。



郑重声明:资讯 【USB常见问题_shadowsing123的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——