Windows.Devices.HumanInterfaceDevice 命名空间

此命名空间允许 UWP 应用访问支持 人机接口设备 (HID) 协议的设备。

设备支持

此命名空间支持大多数 HID。 但是,它不提供对顶级应用程序集合的访问权限, (TLC) 由以下用法表示。

无法访问的使用情况。

UsagePage UsageIds
HID_USAGE_PAGE_UNDEFINED (0x00) All
HID_USAGE_PAGE_GENERIC (0x01) HID_USAGE_GENERIC_MOUSE (0x02)
HID_USAGE_GENERIC_KEYBOARD (0x06)
HID_USAGE_GENERIC_KEYPAD (0x07)
HID_USAGE_GENERIC_SYSTEM_CTL (0x80)
HID_USAGE_PAGE_KEYBOARD (0x07) 全部
HID_USAGE_PAGE_CONSUMER (0x0C) All
HID_USAGE_PAGE_DIGITIZER (0x0D) All
HID_USAGE_PAGE_SENSOR (0x20) 全部
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59) HID_USAGE_LAMPARRAY (0x01)

人机接口设备功能

访问 HID 的 UWP 应用必须在其清单的功能节点中包含特定的设备功能数据。 此数据标识设备及其用途 (或功能) 。 请注意,某些设备可能具有多个功能。

自 Windows 10 版本 1809 (2018 年 10 月更新)

<DeviceCapability Name="humanInterfaceDevice"/>

如果面向 HID 电话设备 (UsagePage==0x0B) ,则还必须指定附加功能 hidTelephony

<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>

在 2018 年 10 月 Windows 10 版本 1809 (之前更新)

自 1809 年以来,不再需要指定 VendorId/ProductId函数类型 ,并且会在较新的系统上被忽略。 如果面向 1809 之前的系统,请参阅下文。

  • <DeviceCapability>Name 属性必须为 humanInterfaceDevice

    • <设备>Id 属性必须指定设备标识符。 此元素可以指定 供应商 ID (vid) 和 产品 ID (pid) ;或者,它可以指定泛型字符串 any。 此外, Device Id 可能包含 或 bluetoothusb可选提供程序字符串。

      • <函数>Type 属性指定设备函数。 此元素包含一个或多个 HID 用法值。 这些值由 和可选 UsageId组成UsagePage,每个值都是 16 位十六进制值。

在以下供应商定义的使用情况数据中,设备由 供应商 ID产品 ID 组合标识。

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

以下内容与第一个 相同,但 元素中Device Id附加的提供程序字符串usb除外。

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701 usb">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

在以下游戏设备数据中,没有 供应商 ID产品 ID

<!-- Any gamepad device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

在以下游戏杆和游戏板数据中,没有 供应商 ID产品 ID

<!-- Any generic gaming device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0004 *"/>
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

疑难解答

  • 验证应用程序清单中 (humanInterfaceDevice) 的 HID 功能。 如果是电话设备,请确保 hidTelephony 还包含该功能。
  • 验证用户是否已授予应用程序使用 HID 的权限。
  • 验证设备类型是否不是指定为不可访问的设备类型。
  • () 的计算机内部设备 DEVPKEY_Device_InLocalMachineContainer == TRUE 通常 无法访问 ,除非在具有 嵌入式模式lowLevelDevices 功能的 SKU 上运行。
  • 通常 无法访问 包含上部/下层筛选器驱动程序的堆栈的设备。 第三方有时会添加这些内容,以便为 自定义硬件启用其他功能。
    • 设备限制部分由hidclass.sys在设备枚举期间确定,这可能会根据是否存在设备/类筛选器将 HID 设备接口上的设备接口GUID_DEVINTERFACE_HID属性DEVPKEY_DeviceInterface_Restricted设置为 TRUE
    • 可以通过查找 UpperFiltersLowerFilters 属性,使用 DeviceManager 确定设备 UpperFilter/LowerFilter 驱动程序是否存在。
    • 可以通过查找 Class upper filtersClass lower filters 属性,使用 DeviceManager 确定 HID 类 UpperFilter/LowerFilter 驱动程序是否存在。
    • 可以通过调用 CM_Get_Device_Interface_Property 来检查设备接口属性,其中 pszDeviceInterface 是将传递给 FromIdAsync 的相同字符串。
  • 通过与驱动程序开发人员合作创建硬件支持应用来创建自定义设备时,可以绕过这些限制

HidBooleanControl

表示 HID 设备上返回开/关值的简单布尔控件。 例如键盘上的 LED 灯。

HidBooleanControlDescription

描述给定 HID 设备的布尔控件。

HidCollection

检索一组相关控件的集合信息。

HID 协议使用集合对彼此相似或与物理或操作邻近性相关的一组控件进行分组。

HidDevice

表示顶级集合和相应的设备。

HidFeatureReport

表示 HID 功能报告

功能报告由设备和主机发出。 设备问题功能报告,用于向主机描述其功能和默认设置。 主机问题功能报告,用于发出设备的请求。

HidInputReport

表示 HID 输入报告

设备发出输入报告来描述状态更改、用户输入和其他特定于设备的数据。 例如,HID 键盘设备将使用输入报告来发出按键信号。 HID 状态传感器将使用输入报告来发出状态检测事件的信号。

HidInputReportReceivedEventArgs

表示 HID API 作为输入报告事件的一部分发送的参数。

HidNumericControl

表示 HID 设备上的数值控件,该控件返回一系列值。 例如,扬声器上的音量控制。

HidNumericControlDescription

描述给定 HID 设备的数字控件。

HidOutputReport

表示 HID 输出报告

主机问题输出报告,用于请求设备上的更改。 例如,主机可能会向键盘发出打开或关闭 LED 的请求。

枚举

HidCollectionType

标识定义设备上控件分组的关系。

集合是一种对一组彼此相似的控件进行分组的方法;或 与物理或操作邻近性相关。

HidReportType

指定 HID 报表类型

另请参阅