USB 的特定于设备的方法 (_DSM)

为了支持 USB 子系统的特定设备类配置,Windows 定义了一种具有本文所述功能的特定设备方法 (_DSM)。

函数 1:双角色控制器的重置后处理

用于双角色 USB 控制器重置后处理功能的 _DSM 控制方法参数如下所示:

参数(函数 1)

  • Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
  • Arg1:修订 ID = 0
  • Arg2:函数索引 = 1
  • Arg3:空包(未使用)

返回(函数 1)

Windows 收件箱驱动程序仅支持主机模式下的 USB 控制器。 每次控制器重置后,USB 驱动程序都会调用 _DSM 函数索引 1,执行配置 USB 控制器以主机模式运行所需的控制器特定初始化。

使用此函数时,_DSM 方法必须出现在 USB 控制器设备下。

函数 2:端口类型标识

用于标识 USB 端口类型的 _DSM 控制方法参数如下所示:

参数(函数 2)

  • Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
  • Arg1:修订 ID = 0
  • Arg2:函数索引 = 2
  • Arg3:空包(未使用)

返回(函数 2)

一个包含以下值之一的整数:

元素 对象类型 说明
端口类型 整数 (BYTE) 指定 USB 端口的类型:

0x00 – 常规 USB

0x01 – HSIC

0x02 – SSIC

0x03 – 0xff 保留

使用此函数时,_DSM 方法必须出现在 USB 端口设备下。

函数 5:禁用端口的 U1 和 U2 转换

当此 _DSM 方法返回 0x01 时,USB 总线驱动程序会禁用端口的 U1 和 U2 转换。 如果返回 0x00,USB 总线驱动程序将返回 U1 和 U2 转换中所述的 U1 和 U2 转换默认启发式方法。

_DSM方法必须显示在 USB3 端口下。 它从 Windows 10 版本 2004 (Vibranium) 开始提供。

_DSM 控制方法参数如下:

参数(函数 5)

  • Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
  • Arg1:修订 ID = 0
  • Arg2:函数索引 = 5
  • Arg3:空包(未使用)

返回(函数 5)

一个包含以下值之一的整数:

元素 对象类型 说明
禁用 U1 和 U2? 整数 (BYTE) 指定 U1 和 U2 行为:

0x00 – USB 总线驱动程序将回退到 U1 和 U2 的默认启发式。

0x01 – U1 和 U2 转换将被禁用。

0x02 – 0xff 保留

函数 6:查询控制器寄存器访问类型

此函数从 Windows Server 2022 和 Windows 11 开始可用。

用于查询与 USB 控制器通信的寄存器访问类型的 _DSM 控制方法参数如下所示:

参数(函数 6)

  • Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
  • Arg1:修订 ID = 0
  • Arg2:函数索引 = 6
  • Arg3:空包(未使用)

返回(函数 6)

一个包含以下值之一的整数:

元素 对象类型 说明
RegisterAccessType 4 字节(32 位)无符号长整型 指定 USB 控制器寄存器访问类型:

0x00 - 未定义的寄存器访问

0x01 - 必须使用 32 位寄存器访问

0x02 – 0xffffffff 保留

使用此函数时,_DSM 方法必须出现在 USB 控制器设备下。

每个 _DSM 的函数索引 0 都是一个返回支持的函数索引集的查询函数,始终是必需的。 有关详细信息,请参阅 ACPI 5.0 规范中的第 9.14.1 节“ _DSM(特定于设备的方法)”。