Windows.Devices.Usb 네임스페이스

이 네임스페이스는 UWP 앱이 WinUSB 디바이스와 통신하는 데 사용할 수 있는 Windows 런타임 클래스를 정의합니다. 이러한 디바이스는 받은 편지함 winusb.sys 드라이버에서 처리되며 특정 Microsoft OS 설명자로 식별됩니다.

유효한 WinUSB 디바이스의 호환 ID는 USB\MS_COMP_WINUSB

SuperMUTT WinUSB 디바이스에 대한 디바이스 관리자 호환되는 ID

디바이스 지원

이 네임스페이스는 대부분의 WinUSB 디바이스를 지원합니다. 그러나 다음의 디바이스 클래스를 사용하여 USB 디바이스에 대한 액세스를 제공하지 않습니다.

  • 오디오(0x01)
  • HID(0x03)
  • 이미지(0x06)
  • 프린터(0x07)
  • 대용량 스토리지(0x08)
  • 스마트 카드(0x0B)
  • 오디오/비디오(0x10)
  • 무선 컨트롤러(0xE0)

USB 디바이스 기능

USB 디바이스에 액세스하는 UWP 앱은 매니페스트의 기능 노드에 특정 디바이스 기능 데이터를 포함해야 합니다. 이 데이터는 디바이스 및 해당 용도(또는 함수)를 식별합니다. 일부 디바이스에는 여러 함수가 있을 수 있습니다.

Windows 10, 버전 1809 이후(2018년 10월 업데이트)

<DeviceCapability Name="usb"/>

Windows 10, 버전 1809 이전(2018년 10월 업데이트)

1809년부터 VendorId ProductId/ 및 함수 형식을 더 이상 지정할 필요가 없으며 최신 시스템에서 무시됩니다. 1809 미만의 시스템을 대상으로 하는 경우 레거시 USB 디바이스 기능을 참조하세요.

문제 해결

  • USB 기능(usb)이 애플리케이션 매니페스트에 있는지 확인합니다.
  • 사용자가 USB 디바이스를 활용할 수 있는 권한을 애플리케이션에 부여했는지 확인합니다.
  • 디바이스 유형이 액세스할 수 없는 것으로 지정되지 않은지 확인합니다.
  • 컴퓨터 내부 디바이스(DEVPKEY_Device_InLocalMachineContainer == TRUE)는 포함된 모드lowLevelDevices 기능이 있는 SKU에서 실행되지 않는 한 일반적으로 액세스할 수 없습니다.
  • 상위/하위 필터 드라이버가 포함된 스택이 있는 디바이스는 일반적으로 액세스할 수 없습니다 . 사용자 지정 하드웨어에 대한 추가 기능을 사용하도록 타사에서 추가되는 경우도 있습니다.
    • 디바이스 제한은 디바이스 열거 중에 부분적으로 결정 winusb.sys 되며, 디바이스/클래스 필터의 존재에 따라 WinUSB 디바이스 인터페이스에서 디바이스 인터페이스 GUID_DEVINTERFACE_WINUSB_WINRT 속성을 DEVPKEY_DeviceInterface_RestrictedTRUE 로 설정할 수 있습니다.
    • 디바이스 UpperFilterLowerFilter/ 드라이버의 존재는 및 LowerFilters 속성을 찾아 UpperFilters DeviceManager를 사용하여 확인할 수 있습니다.
    • WinUSB 클래스 UpperFilterLowerFilter/ 드라이버의 존재는 및 Class lower filters 속성을 찾아 Class upper filters DeviceManager를 사용하여 확인할 수 있습니다.
    • 디바이스 인터페이스 속성은 FromIdAsync에 전달되는 것과 동일한 문자열인 pszDeviceInterface 을 호출 CM_Get_Device_Interface_Property 하여 검사할 수 있습니다.
  • 드라이버 개발자와 협력하여 하드웨어 지원 앱을 만들어 사용자 지정 디바이스를 만들 때 이러한 제한을 무시할 수 있습니다.

클래스

UsbBulkInEndpointDescriptor

USB 대량 IN 엔드포인트에 대한 엔드포인트 설명자입니다. 설명자는 엔드포인트 유형, 방향, 숫자 및 엔드포인트에서 읽을 수 있는 최대 바이트 수를 단일 전송으로 지정합니다.

UsbBulkInPipe

디바이스의 USB 대량 IN 엔드포인트와 통신하기 위해 기본 USB 드라이버가 열리는 파이프를 나타냅니다. 앱은 파이프에서 입력 스트림을 가져올 수 있으며 액세스 데이터는 엔드포인트에서 읽습니다.

UsbBulkOutEndpointDescriptor

USB 대량 OUT 엔드포인트에 대한 엔드포인트 설명자입니다. 설명자는 엔드포인트 유형, 방향, 숫자 및 엔드포인트에 쓸 수 있는 최대 바이트 수를 단일 전송으로 지정합니다.

UsbBulkOutPipe

디바이스의 USB 대량 OUT 엔드포인트와 통신하기 위해 기본 USB 드라이버가 열리는 파이프를 나타냅니다. 개체는 앱이 엔드포인트에 보낼 데이터를 쓸 수 있는 출력 스트림에 대한 액세스를 제공합니다.

UsbConfiguration

USB 구성, 설명자 및 해당 구성 내에 정의된 인터페이스에 대한 정보를 제공합니다. USB 구성에 대한 설명은 USB(유니버설 직렬 버스) 사양의 섹션 9.6.3을 참조하세요.

UsbConfigurationDescriptor

USB 구성 설명자의 처음 9바이트에서 정보를 파생합니다. 이 정보에는 구성이 활성 상태일 때 디바이스의 전원 기능과 해당 구성에 포함된 인터페이스 수가 포함됩니다. 구성 설명자에 대한 설명은 섹션 9.6.3 유니버설 직렬 버스 사양입니다. 설명자 필드에 대한 자세한 내용은 다음을 참조하세요.

  • 유니버설 직렬 버스 3.0 사양의 표 9.15
  • 유니버설 직렬 버스 사양의 표 9.10(버전 2.0)
UsbControlRequestType

USB 제어 전송, 제어 요청 유형, 호스트 간에 데이터를 전송할지 여부 및 디바이스에서 요청 수신자에 대한 정보를 제공합니다.

UsbDescriptor

설명자 형식, 해당 크기(바이트)에 대한 정보를 제공하고 설명자 데이터를 가져옵니다.

UsbDevice

USB 디바이스를 나타냅니다. 개체는 앱이 WinUSB 디바이스를 열거하고 IN 및 OUT 제어 전송을 보내는 데 사용할 수 있는 메서드 및 속성을 제공합니다.

UsbDeviceClass

클래스 코드, 하위 클래스 코드 및 디바이스에서 정의한 프로토콜 코드를 지정하여 앱이 AQS(고급 쿼리 구문) 문자열을 가져오는 방법을 제공합니다. 이 클래스의 속성은 GetDeviceClassSelector 호출에서 전달됩니다.

UsbDeviceClasses

디바이스의 USB 디바이스 클래스를 기반으로 UsbDeviceClass 개체를 검색하는 방법을 제공합니다. 이 클래스에 정의된 속성은 지원되는 USB 디바이스 클래스를 나타내며 UsbDeviceClass 개체를 반환합니다.

USB 디바이스 클래스에 대한 자세한 내용은 승인된 클래스 사양 문서의 공식 USB 웹 사이트를 참조하세요.

UsbDeviceDescriptor

디바이스의 USB 디바이스 설명자에서 정보를 파생합니다. 디바이스 설명자에 대한 설명은 유니버설 직렬 버스 사양의 표 9.8을 참조하세요.

UsbEndpointDescriptor

형식, 방향 및 엔드포인트 번호와 같은 엔드포인트의 USB 엔드포인트 설명자에서 정보를 파생합니다. 또한 이 개체는 엔드포인트 유형에 따라 특정 엔드포인트 설명자를 가져옵니다. 엔드포인트 설명자에 대한 설명은 유니버설 직렬 버스 사양의 섹션 9.6.5를 참조하세요.

  • 유니버설 직렬 버스 3.0 사양의 표 9.18
  • 유니버설 직렬 버스 사양의 표 9.13(버전 2.0)
UsbInterface

해당 엔드포인트, 인터페이스가 지원하는 대체 설정의 수를 포함하여 USB 인터페이스에 대한 정보를 제공하고 해당 설정에 대해 설정된 전체 설명자를 가져옵니다. 또한 인터페이스가 지원하는 엔드포인트와 연결된 파이프를 가져옵니다.

UsbInterfaceDescriptor

인터페이스 설명자의 USB 대체 설정(인터페이스)에 대해 설명합니다. 인터페이스 설명자에 대한 설명은 유니버설 직렬 버스 사양의 섹션 9.6.5를 참조하세요.

  • 유니버설 직렬 버스 3.0 사양의 표 9.15
  • 유니버설 직렬 버스 사양의 표 9.12(버전 2.0)
UsbInterfaceSetting

대체 설정에 대한 정보를 제공하고 해당 설정을 선택합니다. 앱은 설정 및 해당 엔드포인트에 대한 USB 인터페이스 설명자를 가져와 이 설정이 현재 선택되어 있는지 여부를 확인할 수 있습니다.

UsbInterruptInEndpointDescriptor

USB 인터럽트 IN 엔드포인트에 대한 엔드포인트 설명자입니다. 설명자는 엔드포인트 유형, 방향, 숫자 및 엔드포인트에서 읽을 수 있는 최대 바이트 수를 단일 전송으로 지정합니다. 또한 앱은 호스트가 데이터에 대한 엔드포인트를 폴링하는 빈도에 대한 정보를 가져올 수 있습니다.

UsbInterruptInEventArgs

DataReceived 이벤트에 대한 이벤트 처리기에 매개 변수로 전달되는 개체를 나타냅니다.

UsbInterruptInPipe

디바이스의 USB 인터럽트 IN 엔드포인트와 통신하기 위해 기본 USB 드라이버가 열리는 파이프를 나타냅니다. 또한 개체를 사용하면 앱에서 이벤트 처리기를 지정할 수 있습니다. 엔드포인트에서 데이터를 읽을 때 호출되는 처리기입니다.

UsbInterruptOutEndpointDescriptor

USB 인터럽트 OUT 엔드포인트에 대한 엔드포인트 설명자입니다. 설명자는 엔드포인트 유형, 방향, 숫자 및 엔드포인트에 쓸 수 있는 최대 바이트 수를 단일 전송으로 지정합니다. 또한 앱은 호스트가 엔드포인트를 폴링하여 데이터를 보내는 빈도에 대한 정보를 가져올 수 있습니다.

UsbInterruptOutPipe

디바이스의 USB 인터럽트 OUT 엔드포인트와 통신하기 위해 기본 USB 드라이버가 열리는 파이프를 나타냅니다. 개체는 앱이 엔드포인트에 보낼 데이터를 쓸 수 있는 출력 스트림에 대한 액세스를 제공합니다.

UsbSetupPacket

USB 제어 전송에 대한 설정 패킷에 대해 설명합니다. 설정 패킷에 대한 설명은 USB(유니버설 직렬 버스) 사양의 표 9.2를 참조하세요.

열거형

UsbControlRecipient

USB 컨트롤 전송의 수신자를 나타내는 상수를 정의합니다. 받는 사람은 컨트롤 요청의 설정 패킷에 정의됩니다. USB(유니버설 직렬 버스) 사양(www.usb.org)의 섹션 9.3 표 9.2 참조하세요.

UsbControlTransferType

USB 제어 전송 유형(표준, 클래스 또는 공급업체)을 나타내는 상수를 정의합니다.

UsbEndpointType

USB 엔드포인트 유형(컨트롤, 대량, 등시 또는 인터럽트)을 나타내는 상수를 정의합니다.

UsbReadOptions

호스트가 USB 대량 IN 엔드포인트에 대해 여는 USB 파이프에 대해 설정할 수 있는 구성 플래그에 대한 상수를 정의합니다.

UsbTransferDirection

USB 전송 방향을 나타내는 상수를 정의합니다( IN 또는 OUT 전송).

UsbWriteOptions

호스트가 USB OUT 엔드포인트에 대해 여는 USB 파이프에 대해 설정할 수 있는 구성 플래그에 대한 상수를 정의합니다.

추가 정보