다음을 통해 공유


HidDevice 클래스

정의

최상위 컬렉션 및 해당 디바이스를 나타냅니다.

public ref class HidDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class HidDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class HidDevice : System.IDisposable
Public NotInheritable Class HidDevice
Implements IDisposable
상속
Object Platform::Object IInspectable HidDevice
특성
구현

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

이 클래스를 사용하는 방법을 보여 주는 전체 샘플은 사용자 지정 HID 디바이스 샘플을 참조하세요.

다음 예제에서는 XAML 및 C#으로 빌드된 UWP 앱이 GetDeviceSelector 메서드를 사용하여 특정 HID 디바이스(이 경우 Microsoft 입력 구성 디바이스)에 대한 선택기를 만든 다음 FromIdAsync 메서드를 사용하여 해당 디바이스에 대한 연결을 여는 방법을 보여 줍니다.

참고

이 코드 조각은 시스템에 없을 수 있는 HID 디바이스를 찾으려고 시도합니다. 시스템에서 코드를 성공적으로 테스트하려면 vendorId, productId, usagePage, usageId를 유효한 값으로 업데이트해야 합니다.

  1. 열기 디바이스 관리자
  2. 휴먼 인터페이스 디바이스 확장
  3. HID 디바이스 찾기(이 예제에서는 Microsoft 입력 구성 디바이스 선택)
  4. 디바이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  5. 속성에서 세부 정보 탭을 선택합니다.
  6. 세부 정보 탭의 속성 드롭다운에서 하드웨어 ID를 선택합니다.
  7. HID 세부 정보는 상자에 표시됩니다.
디바이스 관리자 HID 세부 정보
using System;
using System.Linq;
using Windows.Devices.Enumeration;
using Windows.Devices.HumanInterfaceDevice;
using Windows.Storage;
using Windows.UI.Xaml.Controls;

namespace HIDdeviceTest
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            EnumerateHidDevices();
        }

        // Find HID devices.
        private async void EnumerateHidDevices()
        {
            // Microsoft Input Configuration Device.
            ushort vendorId = 0x045E;
            ushort productId = 0x07CD;
            ushort usagePage = 0x000D;
            ushort usageId = 0x000E;

            // Create the selector.
            string selector = 
                HidDevice.GetDeviceSelector(usagePage, usageId, vendorId, productId);

            // Enumerate devices using the selector.
            var devices = await DeviceInformation.FindAllAsync(selector);

            if (devices.Any())
            {
                // At this point the device is available to communicate with
                // So we can send/receive HID reports from it or 
                // query it for control descriptions.
                info.Text = "HID devices found: " + devices.Count;

                // Open the target HID device.
                HidDevice device = 
                    await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
                    FileAccessMode.ReadWrite);

                if (device != null)
                {
                    // Input reports contain data from the device.
                    device.InputReportReceived += async (sender, args) =>
                    {
                        HidInputReport inputReport = args.Report;
                        IBuffer buffer = inputReport.Data;

                        // Create a DispatchedHandler as we are interracting with the UI directly and the
                        // thread that this function is running on might not be the UI thread; 
                        // if a non-UI thread modifies the UI, an exception is thrown.

                        await this.Dispatcher.RunAsync(
                            CoreDispatcherPriority.Normal,
                            new DispatchedHandler(() =>
                            {
                                info.Text += "\nHID Input Report: " + inputReport.ToString() + 
                                "\nTotal number of bytes received: " + buffer.Length.ToString();
                            }));
                    };
                }

            }
            else
            {
                // There were no HID devices that met the selector criteria.
                info.Text = "HID device not found";
            }
        }
    }
}

설명

제한 사항을 포함하여 이 클래스를 사용하는 방법에 대한 자세한 내용은 HID(휴먼 인터페이스 디바이스) 지원사용자 지정 HID 디바이스 샘플을 참조하세요.

이 클래스를 사용하여 HID 디바이스에 액세스하는 앱은 매니페스트의 기능 노드에 특정 DeviceCapability 데이터를 포함해야 합니다. 이 데이터는 디바이스 및 해당 용도(또는 함수)를 식별합니다. 자세한 내용은 HID에 대한 디바이스 기능을 지정하는 방법을 참조하세요.

속성

ProductId

지정된 HID 디바이스의 제품 식별자를 가져옵니다.

UsageId

지정된 HID 디바이스의 사용 식별자를 가져옵니다.

UsagePage

최상위 컬렉션의 사용 페이지를 가져옵니다.

VendorId

지정된 HID 디바이스에 대한 공급업체 식별자를 가져옵니다.

Version

지정된 HID 디바이스의 버전 또는 수정 버전을 가져옵니다.

메서드

Close()

호스트와 지정된 HID 디바이스 간의 연결을 닫습니다.

CreateFeatureReport()

호스트가 디바이스에 보낼 유일한 기능 보고서 또는 기본 기능 보고서를 만듭니다.

CreateFeatureReport(UInt16)

호스트가 디바이스에 보낼 reportId 매개 변수로 식별되는 기능 보고서를 만듭니다.

CreateOutputReport()

호스트가 디바이스에 보낼 유일한 출력 보고서 또는 기본 출력 보고서를 만듭니다.

CreateOutputReport(UInt16)

호스트가 디바이스에 보낼 reportId 매개 변수로 식별되는 출력 보고서를 만듭니다.

Dispose()

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.

FromIdAsync(String, FileAccessMode)

deviceId 매개 변수로 식별된 디바이스에 대한 핸들을 엽니다. access 형식은 accessMode 매개 변수에 의해 지정됩니다.

GetBooleanControlDescriptions(HidReportType, UInt16, UInt16)

지정된 HID 디바이스에 대한 부울 컨트롤에 대한 설명을 검색합니다.

GetDeviceSelector(UInt16, UInt16)

지정된 usagePageusageId를 기반으로 AQS(고급 쿼리 구문) 문자열을 검색합니다.

GetDeviceSelector(UInt16, UInt16, UInt16, UInt16)

지정된 usagePage, usageId, vendorIdproductId를 기반으로 AQS(고급 쿼리 구문) 문자열을 검색합니다.

GetFeatureReportAsync()

지정된 HID 디바이스에서 첫 번째 또는 기본 기능 보고서를 비동기적으로 검색합니다.

GetFeatureReportAsync(UInt16)

지정된 HID 디바이스에 대해 reportId 매개 변수로 식별된 기능 보고서를 비동기적으로 검색합니다.

GetInputReportAsync()

지정된 HID 디바이스에서 기본 또는 첫 번째 입력 보고서를 비동기적으로 검색합니다.

GetInputReportAsync(UInt16)

지정된 HID 디바이스에서 reportId 매개 변수로 식별된 입력 보고서를 비동기적으로 검색합니다.

GetNumericControlDescriptions(HidReportType, UInt16, UInt16)

지정된 HID 디바이스에 대한 숫자 컨트롤에 대한 설명을 검색합니다.

SendFeatureReportAsync(HidFeatureReport)

호스트에서 디바이스로 기능 보고서를 비동기적으로 보냅니다.

SendOutputReportAsync(HidOutputReport)

출력 보고서를 호스트에서 디바이스로 비동기적으로 보냅니다.

이벤트

InputReportReceived

GetInputReportAsync() 또는 GetInputReportAsync(System.UInt16 reportId)가 호출되면 디바이스에서 발급한 입력 보고서를 처리하는 이벤트 수신기를 설정합니다.

적용 대상

추가 정보