Windows.Devices.HumanInterfaceDevice 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此命名空間可讓您的 UWP 應用程式存取支援 Human Interface Device (HID) 通訊協定的裝置。
裝置支援
此命名空間支援大部分的 HID。 不過,它不提供最上層應用程式集合的存取權, (TLC) 以下列使用方式表示。
無法存取的使用方式。
UsagePage | UsageIds |
---|---|
HID_USAGE_PAGE_UNDEFINED (0x00 ) |
全部 |
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 ) |
全部 |
HID_USAGE_PAGE_DIGITIZER (0x0D ) |
全部 |
HID_USAGE_PAGE_SENSOR (0x20 ) |
全部 |
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59 ) |
HID_USAGE_LAMPARRAY (0x01 ) |
- 鍵盤和滑鼠裝置是系統保留裝置
- LampArray HID可以使用HidDevice.GetDeviceSelector列舉,但必須使用LampArray.FromIdAsync具現化
- 感應器 HID 可以使用 HidDevice.GetDeviceSelector 列舉,但必須以其各自的 Windows.Devices.Sensors 裝置具現化 (,例如 LightSensor.FromIdAsync)
人為介面裝置功能
存取 HID 的 UWP 應用程式必須在資訊清單的功能節點中包含特定裝置功能資料。 此資料會識別裝置及其用途 (或函式) 。 請注意,某些裝置可能會有多個功能。
自 Windows 10 版本 1809 (2018 年 10 月更新)
- < DeviceCapability >:Name屬性必須是
humanInterfaceDevice
。
<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屬性必須指定裝置識別碼。 此元素可以指定 廠商 識別碼的組合, (vid) 和 產品 識別碼 (pid) ;或者,它可以指定泛型字串
any
。 此外,Device Id
可能包含 或bluetooth
的usb
選擇性提供者字串。- < 函式 >:Type屬性會指定裝置函式。 這個專案包含一或多個 HID 使用值。 這些值是由
UsagePage
和 選擇性UsageId
所組成,每個值都是 16 位十六進位值。
- < 函式 >:Type屬性會指定裝置函式。 這個專案包含一或多個 HID 使用值。 這些值是由
在下列廠商定義的使用量資料中,裝置是由 廠商 識別碼和 產品識別碼 組合所識別。
<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>
在下列遊戲裝置資料中,沒有 廠商識別碼 和 產品識別碼。
<!-- Any gamepad device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
在下列搖桿和遊戲台資料中,沒有 廠商識別碼 和 產品識別碼
<!-- Any generic gaming device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0004 *"/>
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
疑難排解
- 確認 HID 功能 (
humanInterfaceDevice
) 位於應用程式資訊清單中。 如果電話語音裝置,請確定hidTelephony
也包含此功能。 - 確認使用者已授與應用程式使用 HID 的許可權。
- 確認裝置類型不是指定為無法存取的裝置類型。
- DeviceInformation.FindAllAsync () 仍可能列舉無法存取的 HID,但無法由 HumanInterfaceDevice.FromIdAsync () 開啟。 嘗試開啟這類裝置時,將會擲回例外狀況或傳回
null
。
- DeviceInformation.FindAllAsync () 仍可能列舉無法存取的 HID,但無法由 HumanInterfaceDevice.FromIdAsync () 開啟。 嘗試開啟這類裝置時,將會擲回例外狀況或傳回
- 除非在具有內嵌模式和
lowLevelDevices
功能的 SKU 上執行,否則機器內部裝置 (DEVPKEY_Device_InLocalMachineContainer == TRUE
) 通常無法存取。 - 具有包含上/下層篩選驅動程式堆疊的裝置通常 無法 存取。 這些有時會由協力廠商新增,以啟用 自訂硬體的其他功能。
- 裝置限制部分取決於
hidclass.sys
裝置列舉期間,根據裝置/類別篩選準則的存在,在 HID 裝置介面上將裝置介面GUID_DEVINTERFACE_HID
屬性DEVPKEY_DeviceInterface_Restricted
TRUE
設定為 。 - 尋找 和
LowerFilters
屬性,即可使用 DeviceManagerUpperFilters
判斷裝置UpperFilter/LowerFilter驅動程式是否存在。 - 透過尋找
Class upper filters
和Class 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 報表類型。 |