Windows.Devices.Usb 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 네임스페이스는 UWP 앱이 WinUSB 디바이스와 통신하는 데 사용할 수 있는 Windows 런타임 클래스를 정의합니다. 이러한 디바이스는 받은 편지함 winusb.sys
드라이버에서 처리되며 특정 Microsoft OS 설명자로 식별됩니다.
유효한 WinUSB 디바이스의 호환 ID는 USB\MS_COMP_WINUSB
디바이스 지원
이 네임스페이스는 대부분의 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_Restricted
TRUE
로 설정할 수 있습니다. - 디바이스 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 유니버설 직렬 버스 사양입니다. 설명자 필드에 대한 자세한 내용은 다음을 참조하세요.
|
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를 참조하세요.
|
UsbInterface |
해당 엔드포인트, 인터페이스가 지원하는 대체 설정의 수를 포함하여 USB 인터페이스에 대한 정보를 제공하고 해당 설정에 대해 설정된 전체 설명자를 가져옵니다. 또한 인터페이스가 지원하는 엔드포인트와 연결된 파이프를 가져옵니다. |
UsbInterfaceDescriptor |
인터페이스 설명자의 USB 대체 설정(인터페이스)에 대해 설명합니다. 인터페이스 설명자에 대한 설명은 유니버설 직렬 버스 사양의 섹션 9.6.5를 참조하세요.
|
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 파이프에 대해 설정할 수 있는 구성 플래그에 대한 상수를 정의합니다. |