다음을 통해 공유


USB 개발 시작

USB(유니버설 직렬 버스) 디바이스는 구성, 인터페이스, 대체 설정 및 엔드포인트를 통해 기능과 기능을 정의합니다. 이 항목에서는 이러한 개념에 대한 개략적인 개요를 제공합니다. 자세한 내용은 유니버설 직렬 버스 문서의 USB 사양을 참조하세요.

이 부분에서는

주제 설명
USB 디바이스 레이아웃 USB 디바이스는 구성, 인터페이스, 대체 설정 및 엔드포인트를 통해 기능과 기능을 정의합니다. 이 항목에서는 이러한 개념에 대한 개략적인 개요를 제공합니다.
표준 USB 설명자 USB 디바이스는 USB 설명자라는 데이터 구조에서 자체에 대한 정보를 제공합니다. 이 섹션에서는 디바이스, 구성, 인터페이스 및 엔드포인트 설명자에 대한 정보와 USB 디바이스에서 검색하는 방법을 제공합니다.
USB 엔드포인트 및 해당 파이프 USB 디바이스에는 데이터 전송에 사용되는 엔드포인트가 있습니다. 호스트 쪽에서 엔드포인트는 파이프로 표시됩니다. 이 항목에서는 이러한 두 용어를 구분합니다.
Windows의 USB - FAQ 이 항목에서는 USB 디바이스 및 드라이버를 Windows 운영 체제와 개발 및 통합하는 데 새로운 드라이버 개발자를 위한 질문과 대답을 제공합니다.

일반적인 USB 시나리오

1 - 통신을 위한 디바이스 핸들을 가져오 고 검색된 핸들 또는 개체를 사용하여 데이터 전송을 보냅니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

USB 디바이스에 연결하는 방법
WinUsb_Initialize

WinUSB 템플릿을 기반으로 Windows 데스크톱 앱 작성

디바이스의 구성, 인터페이스, 설정 및 해당 엔드포인트에 대한 정보를 가져오기 위한 USB 설명자 검색입니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

USB 설명자
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbInterfaceSetting.Descriptors

USB 설명자를 가져오는 방법
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

디바이스에서 USB 설명자를 쿼리합니다

2 - 인터페이스당 활성 USB 구성 및 설정을 선택하도록 디바이스를 구성합니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

USB 디바이스에 대한 구성을 선택하는 방법입니다.

USB 인터페이스에서 대체 설정을 선택하는 방법입니다.

UMDF:
구성 선택은 지원되지 않습니다.

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

USB 인터페이스 설정을 선택하는 방법
WinUsb_SetCurrentAlternateSetting

3 - 디바이스를 구성하고 특정 디바이스와 관련된 공급업체 명령을 수행하기 위한 제어 전송을 보냅니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer (USB 타겟 장치 제어 전송을 위한 요청 형식 지정)
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

USB 제어 전송 보내는 방법
SendControlInTransferAsync
SendControlOutTransferAsync

USB 제어 전송 보내는 방법
WinUsb_ControlTransfer

기본 엔드포인트로 제어 전송 보내기

4 - 대용량 데이터를 전송하는 대용량 스토리지 디바이스에서 일반적으로 사용하는 대량 전송을 보냅니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

USB 대량 전송 요청을 보내는 방법

USB 파이프 데이터를 읽기 위해 연속 판독기를 사용하는 방법

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

USB 대량 전송 요청을 보내는 방법
WinUsb_WritePipe
WinUsb_ReadPipe

I/O 요청 발행

5 - 인터럽트 전송 보내기 하드웨어 인터럽트 데이터를 검색하기 위해 데이터를 읽습니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
대량 전송과 동일 UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

USB 인터럽트 전송 요청을 보내는 방법
대량 전송과 동일

6 - 미디어 스트리밍 디바이스에 주로 사용되는 등시 전송 보내기.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WdfUsbTargetDeviceCreateIsochUrb

USB 등시 엔드포인트로 데이터를 전송하는 방법

UMDF:
지원되지 않음
지원되지 않음 WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

WinUSB 데스크톱 앱에서 USB 등시 전송 보내기

7 - 디바이스가 저전력 상태로 들어가 디바이스를 다시 작동 상태로 되돌릴 수 있도록 USB 선택적 일시 중단입니다.

클라이언트 드라이버 UWP 앱 Windows 데스크톱 앱
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

UMDF:
IWDFUsbTargetDevice::SetPowerPolicy
IWDFDevice2::AssignS0IdleSettings
IWDFDevice3::AssignS0IdleSettingsEx

선택적 일시 중단에 디바이스를 보내는 방법
지원되지 않음 WinUsb_SetPowerPolicy

WinUSB 전원 관리

참고하십시오