다음을 통해 공유


UsbDevice 클래스

정의

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
상속
Object Platform::Object IInspectable UsbDevice
특성
구현

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 속성에서 식별자를 파생시킬 수 있습니다. 예를 들어 하드웨어 IDUSB\VID_045E&PID_078E인 경우 공급업체 ID는 0x045E 이고 제품 ID는 입니다 0x078E.
  • 디바이스 인터페이스 GUID입니다. DeviceInterfaceGuids 레지스트리 항목에서 해당 GUID를 가져올 수 있습니다. HKEY_LOCAL_MACHINE\시스템\CurrentControlSet\열거형\USB\<디바이스 식별자 인스턴스 식별자>\<>\디바이스 매개 변수
  • 디바이스의 클래스, 서브클래스 및 프로토콜 코드입니다. Device Parameters 키 아래에 있는 CompatibleIds 레지스트리 항목에서 해당 정보를 가져올 수 있습니다.

UsbDevice 개체를 얻으려면 다음을 수행합니다.

  1. 열거된 디바이스 컬렉션에서 디바이스를 찾기 위한 검색 조건을 포함하는 AQS(고급 쿼리 구문) 문자열을 가져옵니다. 공급업체 ID/제품 ID 또는 디바이스 인터페이스 GUID로 검색하려면 GetDeviceSelector를 호출합니다. 디바이스 클래스로 검색하려면 GetDeviceClassSelector를 호출합니다. 두 호출 모두 형식이 지정된 AQS 문자열을 검색합니다.
  2. 검색된 문자열을 FindAllAsync에 전달합니다. 호출은 DeviceInformationCollection 개체를 검색합니다.
  3. 컬렉션을 반복합니다. 각 반복은 DeviceInformation 개체를 가져옵니다.
  4. DeviceInformation.Id 속성 값을 가져옵니다. 문자열 값은 디바이스 instance 경로입니다. 예: \\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}.
  5. 디바이스 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 컨트롤 전송을 시작하여 디바이스의 기본 제어 엔드포인트로 데이터를 보냅니다.

적용 대상

추가 정보