다음을 통해 공유


USB 요청 블록(URL)

이 문서에서는 URB(USB 요청 블록)를 설명하고 USB 클라이언트 드라이버가 WDM(Windows 드라이버 모델) 루틴을 사용하여 USB 드라이버 스택에 URL을 할당, 빌드 및 제출하는 방법에 대한 정보를 제공합니다.

USB(유니버설 직렬 버스) 클라이언트 드라이버는 디바이스와 직접 통신할 수 없습니다. 대신 클라이언트 드라이버는 요청을 만들고 처리를 위해 USB 드라이버 스택에 제출합니다. 각 요청 내에서 클라이언트 드라이버는 URB(USB 요청 블록)라는 가변 길이 데이터 구조를 제공합니다. URB 구조는 요청의 세부 정보를 설명하고 완료된 요청의 상태 대한 정보도 포함합니다. 클라이언트 드라이버는 URL을 통해 데이터 전송을 포함한 모든 디바이스별 작업을 수행합니다. 클라이언트 드라이버는 USB 드라이버 스택에 제출하기 전에 요청에 대한 정보를 사용하여 URB를 초기화해야 합니다. 특정 유형의 요청에 대해 Microsoft는 URB 구조를 할당하고 URB 구조의 필요한 멤버를 클라이언트 드라이버에서 제공하는 세부 정보로 채우는 도우미 루틴 및 매크로를 제공합니다.

각 URB는 요청된 작업의 유형을 식별하는 데 목적이 있는 표준 고정 크기 헤더(_URB_HEADER)로 시작합니다. _URB_HEADERLength 멤버는 URB의 크기(바이트)를 지정합니다. 일련의 시스템 정의 URB_FUNCTION_XXX 상수 중 하나여야 하는 Function 멤버는 요청된 작업의 유형을 결정합니다. 데이터 전송의 경우 instance 이 멤버는 전송 유형을 나타냅니다. URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 및 URB_FUNCTION_ISOCH_TRANSFER 함수 코드는 각각 제어, 대량/인터럽트 및 등시 전송을 나타냅니다. USB 드라이버 스택은 상태 멤버를 사용하여 USB 관련 상태 코드를 반환합니다.

URB를 제출하기 위해 클라이언트 드라이버는 IRP_MJ_INTERNAL_DEVICE_CONTROL 형식의 IRP(I/O 요청 패킷)를 통해 디바이스에 전달되는 IOCTL_INTERNAL_USB_SUBMIT_URB 요청을 사용합니다.

USB 드라이버 스택이 URB 처리를 완료한 후 드라이버 스택은 URB 구조의 상태 멤버를 사용하여 USB 관련 상태 코드를 반환합니다.

참고

KMDF 및 UMDF 드라이버 개발자는 USB 디바이스와 통신하기 위해 해당 프레임워크 인터페이스를 사용해야 합니다. 자세한 내용은 KMDF 드라이버용 USB 디바이스 작업UMDF에서 USB 인터페이스 작업을 참조하세요. 이러한 topics USB 디바이스 통신에 사용되는 기본 WDM 드라이버 인터페이스에 대해 설명합니다.

섹션 내용

항목 Description
URL 할당 및 빌드 이 항목에서는 MICROSOFT 제공 USB 드라이버 스택에 요청을 보내기 전에 USB 클라이언트 드라이버가 WDM(Windows 드라이버 모델) 드라이버 루틴을 사용하여 URB를 할당하고 형식을 지정하는 방법을 설명합니다.
URB를 제출하는 방법 이 항목에서는 특정 요청을 처리하기 위해 초기화된 URB를 USB 드라이버 스택에 제출하는 데 필요한 단계에 대해 설명합니다.
모범 사례: URL 사용 이 항목에서는 Windows 8 포함된 USB 드라이버 스택에 URB를 할당, 빌드 및 보내기 위한 클라이언트 드라이버에 대한 모범 사례를 설명합니다.