다음을 통해 공유


USB 클라이언트 드라이버에서 USB 데이터 전송 보내기 개요

이 섹션의 문서에서는 I/O 요청에 대한 USB 파이프 및 URL에 대한 정보를 제공하고 클라이언트 드라이버가 DDI(디바이스 드라이버 인터페이스)를 사용하여 USB 디바이스와 데이터를 전송하는 방법을 설명합니다.

전송은 호스트 컨트롤러와 USB 디바이스 간에 데이터를 이동할 때마다 발생합니다. 일반적으로 USB 전송은 제어 전송 및 데이터 전송으로 광범위하게 분류될 수 있습니다. 모든 USB 디바이스는 제어 전송을 지원해야 하며 데이터 전송에 대한 엔드포인트를 지원할 수 있습니다. 전송의 각 유형은 USB 엔드포인트 유형(디바이스의 버퍼)과 연결됩니다. 제어 전송은 기본 엔드포인트와 연결되며 데이터 전송은 단방향 엔드포인트를 사용합니다. 데이터 전송 형식은 인터럽트, 대량 및 등시 엔드포인트를 사용합니다. USB 드라이버 스택은 디바이스에서 지원하는 각 엔드포인트에 대한 파이프 라는 통신 채널을 만듭니다. 파이프의 한쪽 끝은 디바이스의 엔드포인트입니다. 파이프의 다른 쪽 끝은 항상 호스트 컨트롤러입니다.

디바이스에 I/O 요청을 보내기 전에 클라이언트 드라이버는 USB 디바이스에서 구성, 인터페이스, 엔드포인트, 공급업체 및 클래스별 설명자에 대한 정보를 검색해야 합니다. 또한 드라이버도 디바이스를 구성해야 합니다. 디바이스 구성에는 각 인터페이스 내에서 구성 및 대체 설정 선택과 같은 작업이 포함됩니다. 각 대체 설정은 데이터 전송에 사용할 수 있는 하나 이상의 USB 엔드포인트를 지정할 수 있습니다.

디바이스 구성에 대한 자세한 내용은 USB 디바이스에 대한 구성을 선택하는 방법USB 인터페이스에서 대체 설정을 선택하는 방법을 참조하세요.

클라이언트 드라이버가 디바이스를 구성한 후 드라이버는 현재 선택한 대체 설정의 각 엔드포인트에 대해 USB 드라이버 스택에서 만든 파이프 핸들에 액세스할 수 있습니다. 엔드포인트로 데이터를 전송하기 위해 클라이언트 드라이버는 요청 유형과 관련된 URB 형식을 지정하여 요청을 만듭니다.

섹션 내용

아티클 Description
USB 제어 전송을 보내는 방법 이 문서에서는 컨트롤 전송의 구조와 클라이언트 드라이버가 디바이스에 컨트롤 요청을 보내는 방법을 설명합니다.
USB 파이프를 열거하는 방법 이 문서에서는 USB 파이프에 대한 개요를 제공하고 USB 드라이버 스택에서 파이프 핸들을 가져오는 데 USB 클라이언트 드라이버에 필요한 단계를 설명합니다.
USB 파이프에서 데이터를 읽기 위해 연속 판독기를 사용하는 방법 이 문서에서는 WDF 제공 연속 판독기 개체에 대해 설명합니다. 이 문서의 절차에서는 개체를 구성하고 이를 사용하여 USB 파이프에서 데이터를 읽는 방법에 대한 단계별 지침을 제공합니다.
USB 대량 전송 요청을 보내는 방법 이 문서에서는 USB 대량 전송에 대한 간략한 개요를 제공합니다. 또한 클라이언트 드라이버가 디바이스에서 대량 데이터를 보내고 받는 방법에 대한 단계별 지침을 제공합니다.
USB 대량 엔드포인트에서 정적 스트림을 열고 닫는 방법 이 문서에서는 정적 스트림 기능에 대해 설명하고 USB 클라이언트 드라이버가 USB 3.0 디바이스의 대량 엔드포인트에서 스트림을 열고 닫는 방법을 설명합니다.
USB 등시 엔드포인트로 데이터를 전송하는 방법 이 문서에서는 클라이언트 드라이버가 URB(USB 요청 블록)를 빌드하여 USB 디바이스의 등시 엔드포인트와 데이터를 전송하는 방법을 설명합니다.
연결된 MDL을 보내는 방법 이 문서에서는 USB 드라이버 스택의 연결된 MDL 기능과 클라이언트 드라이버가 MDL 구조 체인으로 전송 버퍼를 보내는 방법에 대해 알아봅니다.
USB 파이프 오류에서 복구하는 방법 이 문서에서는 USB 파이프로의 데이터 전송이 실패할 때 시도할 수 있는 단계에 대한 정보를 제공합니다. 이 문서에 설명된 메커니즘은 대량, 인터럽트 및 등시 파이프에 대한 포트 중단, 다시 설정 및 주기 포트 작업을 다룹니다.
USB 대역폭 할당 이 섹션에서는 USB 대역폭의 신중한 관리에 관한 지침을 제공합니다.