다음을 통해 공유


_URB_OPEN_STATIC_STREAMS 구조체(usb.h)

_URB_OPEN_STATIC_STREAMS 구조는 USB 클라이언트 드라이버가 지정된 대량 엔드포인트에서 스트림을 여는 데 사용됩니다.

URB의 형식을 지정하려면 UsbBuildOpenStaticStreamsRequest 함수를 호출합니다 .

구문

struct _URB_OPEN_STATIC_STREAMS {
  struct _URB_HEADER       Hdr;
  USBD_PIPE_HANDLE         PipeHandle;
  ULONG                    NumberOfStreams;
  USHORT                   StreamInfoVersion;
  USHORT                   StreamInfoSize;
  PUSBD_STREAM_INFORMATION Streams;
};

멤버

Hdr

URB 헤더 정보를 지정하는 _URB_HEADER 구조체입니다. Hdr.Function 은 URB_FUNCTION_OPEN_STATIC_STREAMS, Hdr.Length 는 이어야 sizeof(_URB_OPEN_STATIC_STREAMS)합니다.

PipeHandle

열려는 스트림을 지원하는 엔드포인트와 연결된 파이프에 대한 불투명 핸들입니다.

클라이언트 드라이버는 URB_FUNCTION_SELECT_CONFIGURATION 또는 URB_FUNCTION_SELECT_INTERFACE 요청에서 PipeHandle 을 가져옵니다.

NumberOfStreams

열 스트림 수입니다. NumberOfStreams 값은 Streams가 가리키는 배열의 요소 수를 나타냅니다. 이 값은 0보다 크고 USB 드라이버 스택, 호스트 컨트롤러 및 디바이스의 엔드포인트에서 지원하는 최대 스트림 수보다 작거나 같아야 합니다. 자세한 내용은 설명 부분을 참조하세요.

StreamInfoVersion

USBD_STREAM_INFORMATION 구조체의 버전입니다. URB_OPEN_STATIC_STREAMS_VERSION_100 설정해야 합니다. 그렇지 않으면 요청이 실패하고 URB 상태 USBD_STATUS_INVALID_PARAMETER.

StreamInfoSize

USBD_STREAM_INFORMATION 구조체의 크기입니다. StreamInfoSize는 이어야 sizeof(USBD_STREAM_INFORMATION)합니다. 그렇지 않으면 요청이 실패하고 URB 상태 USBD_STATUS_INFO_LENGTH_MISMATCH.

Streams

호출자가 할당하고 초기화된 USBD_STREAM_INFORMATION 구조체 배열에 대한 포인터입니다. 배열의 길이는 열 스트림 수에 따라 달라지며 NumberOfStreams 값과 동일해야 합니다. 자세한 내용은 설명 부분을 참조하세요.

설명

I/O 작업에 대한 엔드포인트에서 스트림(기본 스트림 이외의)을 사용하려면 클라이언트 드라이버는 USB 드라이버 스택에 오픈 스트림 요청(URB_FUNCTION_OPEN_STATIC_STREAMS)을 전송하여 필요한 스트림을 엽니다. 요청의 경우 클라이언트 드라이버는 _URB_OPEN_STATIC_STREAMS 구조를 초기화하여 URB의 형식을 지정해야 합니다. URB의 형식을 지정하려면 UsbBuildOpenStaticStreamsRequest 함수를 호출합니다 .

클라이언트 드라이버에서 열 수 있는 최대 스트림 수는 USB 드라이버 스택, 호스트 컨트롤러 및 대량 엔드포인트에서 지원하는 최대 스트림 수보다 작거나 같아야 합니다. 호스트 컨트롤러에서 지원하는 최대 스트림 수를 얻으려면 USBD_QueryUsbCapability 호출합니다. USB 드라이버 스택은 최대 255개의 스트림을 지원합니다. 클라이언트 드라이버가 255개 이상의 스트림을 요청하는 경우 USBD_QueryUsbCapability 요청에 실패합니다. 엔드포인트에서 지원하는 최대 스트림 수를 얻으려면 엔드포인트 도우미 설명자를 검사합니다(Usbspec.h 의 USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR 참조).

오픈 스트림 요청 및 코드 예제에 대한 URB 형식 지정에 대한 자세한 내용은 USB 대량 엔드포인트에서 정적 스트림을 열고 닫는 방법을 참조하세요.

클라이언트 드라이버가 스트림 사용을 마치면 드라이버는 종가 스트림 요청을 전송하여 특정 엔드포인트와 연결된 모든 스트림을 닫을 수 있습니다. 요청을 보내려면 클라이언트 드라이버가 _URB_PIPE_REQUEST 구조의 엔드포인트에 대한 정보를 지정해야 합니다. _URB_PIPE_REQUEST Hdr 멤버는 URB_FUNCTION_CLOSE_STATIC_STREAMS 합니다. PipeHandle 멤버는 사용 중인 스트림을 포함하는 엔드포인트에 대한 핸들이어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
머리글 usb.h

추가 정보

USB 대량 엔드포인트에서 정적 스트림을 열고 닫는 방법

Urb

USB 구조체

_URB_HEADER