Windows.Devices.HumanInterfaceDevice 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 네임스페이스는 UWP 앱에 HID(휴먼 인터페이스 디바이스) 프로토콜을 지원하는 디바이스에 대한 액세스 권한을 부여합니다.
디바이스 지원
이 네임스페이스는 대부분의 HID를 지원합니다. 그러나 다음 사용법으로 표시되는 최상위 TCC(애플리케이션 컬렉션)에 대한 액세스 권한은 제공하지 않습니다.
액세스할 수 없는 사용량입니다.
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"/>
Windows 10, 버전 1809 이전(2018년 10월 업데이트)
1809년 이후 VendorId ProductId/ 및 함수 형식은 더 이상 지정할 필요가 없으며 최신 시스템에서 무시됩니다. 1809 이전 시스템을 대상으로 하는 경우 아래를 참조하세요.
<DeviceCapability>: Name 특성은 이어야
humanInterfaceDevice
합니다.<디바이스>: ID 특성은 디바이스 식별자를 지정해야 합니다. 이 요소는 조합 공급업체 ID (vid) 및 제품 ID (pid)를 지정할 수 있습니다. 또는 제네릭 문자열
any
을 지정할 수 있습니다. 또한 는Device Id
또는bluetooth
의 선택적 공급자 문자열을usb
포함할 수 있습니다.- <함수>: Type 특성은 디바이스 함수를 지정합니다. 이 요소에는 하나 이상의 HID 사용 값이 포함됩니다. 이러한 값은
UsagePage
각각 16비트 16비트 값인 및 선택적UsageId
로 구성됩니다.
- <함수>: Type 특성은 디바이스 함수를 지정합니다. 이 요소에는 하나 이상의 HID 사용 값이 포함됩니다. 이러한 값은
다음 공급업체 정의 사용량 데이터에서 디바이스는 공급업체 ID 및 제품 ID 조합으로 식별됩니다.
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:0A81 0701">
<Function Type="usage:ffa0 0001"/>
</Device>
</DeviceCapability>
다음은 요소의 추가 공급자 문자열 usb
Device Id
을 제외하고 첫 번째 와 동일합니다.
<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>
문제 해결
- HID 기능(
humanInterfaceDevice
)이 애플리케이션 매니페스트에 있는지 확인합니다. 전화 통신 디바이스인 경우 기능도 포함되어 있는지 확인hidTelephony
합니다. - 사용자가 애플리케이션에서 HID를 활용할 수 있는 권한을 부여했는지 확인합니다.
- 디바이스 유형이 액세스할 수 없음으로 지정된 유형이 아닌지 확인합니다.
- 액세스할 수 없는 HID는 DeviceInformation.FindAllAsync()에 의해 열거될 수 있지만 HumanInterfaceDevice.FromIdAsync()에서 열 수 없습니다. 이러한 디바이스를 열면 예외가 throw되거나 가 반환
null
됩니다.
- 액세스할 수 없는 HID는 DeviceInformation.FindAllAsync()에 의해 열거될 수 있지만 HumanInterfaceDevice.FromIdAsync()에서 열 수 없습니다. 이러한 디바이스를 열면 예외가 throw되거나 가 반환
- 포함된 모드 및
lowLevelDevices
기능이 있는 SKU에서 실행되지 않는 한 컴퓨터 내부 디바이스(DEVPKEY_Device_InLocalMachineContainer == TRUE
)는 일반적으로 액세스할 수 없습니다. - 상위/하위 필터 드라이버가 포함된 스택이 있는 디바이스는 일반적으로 액세스할 수 없습니다 . 사용자 지정 하드웨어에 대한 추가 기능을 사용하도록 타사에서 추가되는 경우도 있습니다.
- 디바이스 제한은 디바이스 열거 중에 부분적으로 결정
hidclass.sys
되며, 디바이스/클래스 필터의 존재에 따라 HID 디바이스 인터페이스에서 디바이스 인터페이스GUID_DEVINTERFACE_HID
속성을DEVPKEY_DeviceInterface_Restricted
TRUE
로 설정할 수 있습니다. - 디바이스 UpperFilterLowerFilter/ 드라이버의 존재는 및
LowerFilters
속성을 찾아UpperFilters
DeviceManager를 사용하여 확인할 수 있습니다. - HID 클래스 UpperFilterLowerFilter/ 드라이버의 존재는 및
Class lower filters
속성을 찾아Class upper filters
DeviceManager를 사용하여 확인할 수 있습니다. - 디바이스 인터페이스 속성은 FromIdAsync에 전달되는 것과 동일한 문자열인 를
pszDeviceInterface
호출CM_Get_Device_Interface_Property
하여 검사할 수 있습니다.
- 디바이스 제한은 디바이스 열거 중에 부분적으로 결정
- 드라이버 개발자와 협력하여 하드웨어 지원 앱을 만들어 사용자 지정 디바이스를 만들 때 이러한 제한을 무시할 수 있습니다.
클래스
HidBooleanControl |
켜기/끄기 값을 반환하는 HID 디바이스의 간단한 부울 컨트롤을 나타냅니다. 예를 들어 키보드의 LED 표시등이 있습니다. |
HidBooleanControlDescription |
지정된 HID 디바이스에 대한 부울 컨트롤을 설명합니다. |
HidCollection |
관련 컨트롤 그룹에 대한 컬렉션 정보를 검색합니다. HID 프로토콜은 컬렉션을 사용하여 서로 유사한 컨트롤 집합을 그룹화하거나 물리적 또는 운영 근접성으로 관련됩니다. |
HidDevice |
최상위 컬렉션 및 해당 디바이스를 나타냅니다. |
HidFeatureReport |
HID 기능 보고서를 나타냅니다. 기능 보고서는 디바이스와 호스트 모두에서 발급됩니다. 디바이스는 기능 보고서를 발행하여 호스트에 대한 기능 및 기본 설정을 설명합니다. 호스트는 기능 보고서를 발행하여 디바이스를 요청합니다. |
HidInputReport |
HID 입력 보고서를 나타냅니다. 디바이스는 입력 보고서를 실행하여 상태 변경, 사용자 입력 및 기타 디바이스 관련 데이터를 설명합니다. 예를 들어 HID 키보드 디바이스는 입력 보고서를 사용하여 키 누르기 신호를 보냅니다. HID 프레즌스 센서는 입력 보고서를 사용하여 현재 상태 감지 이벤트를 신호로 보냅니다. |
HidInputReportReceivedEventArgs |
HID API가 input-report 이벤트의 일부로 보내는 인수를 나타냅니다. |
HidNumericControl |
값 범위를 반환하는 HID 디바이스의 숫자 컨트롤을 나타냅니다. 예를 들어 스피커의 볼륨 제어가 있습니다. |
HidNumericControlDescription |
지정된 HID 디바이스에 대한 숫자 컨트롤을 설명합니다. |
HidOutputReport |
HID 출력 보고서를 나타냅니다. 호스트는 출력 보고서를 실행하여 디바이스의 변경 내용을 요청합니다. 예를 들어 호스트는 키보드에 LED를 켜거나 끄라는 요청을 실행할 수 있습니다. |
열거형
HidCollectionType |
디바이스에서 컨트롤의 그룹화 를 정의하는 관계를 식별합니다. 컬렉션은 서로 유사한 컨트롤 집합을 그룹화할 수 있는 방법입니다. 또는 는 물리적 또는 작동 근접성으로 관련됩니다. |
HidReportType |
HID 보고서 형식을 지정합니다. |