UsbDevice 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
USB 디바이스를 나타냅니다. 개체는 앱이 WinUSB 디바이스를 열거하고 IN 및 OUT 제어 전송을 보내는 데 사용할 수 있는 메서드 및 속성을 제공합니다.
public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
- 상속
- 특성
- 구현
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
예제
이 예제 코드는 공급업체/제품 ID를 지정하여 UsbDevice 개체를 가져오는 방법을 보여줍니다.
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
UInt32 vid = 0x045E;
UInt32 pid = 0x078F;
string aqs = UsbDevice.GetDeviceSelector(vid, pid);
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);
if (myDevices.Count == 0)
{
ShowError("Device not found!");
return;
}
UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);
// Send a control transfer.
UsbSetupPacket initSetupPacket = new UsbSetupPacket()
{
Request = initRequest,
RequestType = new UsbControlRequestType()
{
Recipient = UsbControlRecipient.DefaultInterface,
ControlTransferType = UsbControlTransferType.Vendor
}
};
await device.SendOutControlTransferAsync(initSetupPacket);
}
설명
UsbDevice 개체에 대한 참조를 가져오기 전에 다음 식별자 중 하나가 있어야 합니다.
- 물리적 디바이스의 공급업체 및 제품 식별자입니다. 이러한 식별자는 하드웨어 ID 문자열의 일부입니다. 또는 디바이스 관리자하드웨어 ID 속성에서 식별자를 파생시킬 수 있습니다. 예를 들어 하드웨어 ID 가
USB\VID_045E&PID_078E
인 경우 공급업체 ID는0x045E
이고 제품 ID는 입니다0x078E
. - 디바이스 인터페이스 GUID입니다. DeviceInterfaceGuids 레지스트리 항목에서 해당 GUID를 가져올 수 있습니다. HKEY_LOCAL_MACHINE\시스템\CurrentControlSet\열거형\USB\<디바이스 식별자 인스턴스 식별자>\<>\디바이스 매개 변수
- 디바이스의 클래스, 서브클래스 및 프로토콜 코드입니다. Device Parameters 키 아래에 있는 CompatibleIds 레지스트리 항목에서 해당 정보를 가져올 수 있습니다.
UsbDevice 개체를 얻으려면 다음을 수행합니다.
- 열거된 디바이스 컬렉션에서 디바이스를 찾기 위한 검색 조건을 포함하는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. 공급업체 ID/제품 ID 또는 디바이스 인터페이스 GUID로 검색하려면 GetDeviceSelector를 호출합니다. 디바이스 클래스로 검색하려면 GetDeviceClassSelector를 호출합니다. 두 호출 모두 형식이 지정된 AQS 문자열을 검색합니다.
- 검색된 문자열을 FindAllAsync에 전달합니다. 호출은 DeviceInformationCollection 개체를 검색합니다.
- 컬렉션을 반복합니다. 각 반복은 DeviceInformation 개체를 가져옵니다.
- DeviceInformation.Id 속성 값을 가져옵니다. 문자열 값은 디바이스 instance 경로입니다. 예:
\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
. - 디바이스 instance 문자열을 전달하여 FromIdAsync를 호출하고 UsbDevice 개체를 가져옵니다. 그런 다음, UsbDevice 개체를 사용하여 컨트롤 전송 전송과 같은 다른 작업을 수행할 수 있습니다. 앱이 UsbDevice 개체 사용을 완료하면 앱은 Close를 호출하여 해제해야 합니다.
속성
Configuration |
모든 인터페이스 및 해당 엔드포인트를 포함하는 USB 구성을 나타내는 개체를 가져옵니다. |
DefaultInterface |
USB 구성의 기본 인터페이스 또는 첫 번째 인터페이스를 나타내는 개체를 가져옵니다. |
DeviceDescriptor |
USB 디바이스 설명자를 나타내는 개체를 가져옵니다. |
메서드
Close() |
FromIdAsync를 호출하여 이전에 가져온 UsbDevice 개체에 대한 참조를 해제합니다. |
Dispose() |
관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다. |
FromIdAsync(String) |
UsbDevice 개체를 만드는 비동기 작업을 시작합니다. |
GetDeviceClassSelector(UsbDeviceClass) |
특정 유형의 USB 디바이스를 찾기 위해 앱이 DeviceInformation.FindAllAsync 에 전달할 수 있는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. |
GetDeviceSelector(Guid) |
앱에서 지정한 디바이스 인터페이스 GUID 식별자를 기반으로 하는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. 앱은 특정 유형의 USB 디바이스를 찾기 위해 문자열을 DeviceInformation.FindAllAsync 에 전달합니다. |
GetDeviceSelector(UInt32, UInt32) |
앱에서 지정한 공급업체 및 제품 식별자를 기반으로 하는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. 앱은 특정 유형의 USB 디바이스를 찾기 위해 문자열을 DeviceInformation.FindAllAsync 에 전달합니다. |
GetDeviceSelector(UInt32, UInt32, Guid) |
앱에서 지정한 공급업체, 제품 및 디바이스 인터페이스 GUID 식별자를 기반으로 하는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. 앱은 특정 유형의 USB 디바이스를 찾기 위해 문자열을 DeviceInformation.FindAllAsync 에 전달합니다. |
SendControlInTransferAsync(UsbSetupPacket) |
디바이스의 기본 컨트롤 엔드포인트에서 읽는 길이가 0인 USB 컨트롤 전송을 시작합니다. |
SendControlInTransferAsync(UsbSetupPacket, IBuffer) |
USB 컨트롤 전송을 시작하여 디바이스의 기본 제어 엔드포인트에서 데이터를 받습니다. |
SendControlOutTransferAsync(UsbSetupPacket) |
디바이스의 기본 컨트롤 엔드포인트에 쓰는 길이가 0인 USB 컨트롤 전송을 시작합니다. |
SendControlOutTransferAsync(UsbSetupPacket, IBuffer) |
USB 컨트롤 전송을 시작하여 디바이스의 기본 제어 엔드포인트로 데이터를 보냅니다. |