HidDevice 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
최상위 컬렉션 및 해당 디바이스를 나타냅니다.
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
- 상속
- 특성
- 구현
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를 유효한 값으로 업데이트해야 합니다.
- 열기 디바이스 관리자
- 휴먼 인터페이스 디바이스 확장
- HID 디바이스 찾기(이 예제에서는 Microsoft 입력 구성 디바이스 선택)
- 디바이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
- 속성에서 세부 정보 탭을 선택합니다.
- 세부 정보 탭의 속성 드롭다운에서 하드웨어 ID를 선택합니다.
- 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) |
지정된 usagePage 및 usageId를 기반으로 AQS(고급 쿼리 구문) 문자열을 검색합니다. |
GetDeviceSelector(UInt16, UInt16, UInt16, UInt16) |
지정된 usagePage, usageId, vendorId 및 productId를 기반으로 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)가 호출되면 디바이스에서 발급한 입력 보고서를 처리하는 이벤트 수신기를 설정합니다. |