USB_ENDPOINT_DESCRIPTOR 구조체(usbspec.h)

USB_ENDPOINT_DESCRIPTOR 구조는 USB 클라이언트 드라이버에서 USB 정의 엔드포인트 설명자를 검색하는 데 사용됩니다. 이 구조의 멤버는 USB 문서 라이브러리에서 사용할 수 있는 유니버설 직렬 버스 3.1 사양에 설명되어 있습니다. 섹션 9.6.6을 참조하세요.

구문

typedef struct _USB_ENDPOINT_DESCRIPTOR {
  UCHAR  bLength;
  UCHAR  bDescriptorType;
  UCHAR  bEndpointAddress;
  UCHAR  bmAttributes;
  USHORT wMaxPacketSize;
  UCHAR  bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;

멤버

bLength

이 설명자의 길이(바이트)를 지정합니다.

bDescriptorType

설명자 형식을 지정합니다. USB_ENDPOINT_DESCRIPTOR_TYPE 설정해야 합니다.

bEndpointAddress

USB 정의 엔드포인트 주소를 지정합니다. 4개의 하위 비트는 엔드포인트 번호를 지정합니다. 상위 비트는 이 엔드포인트의 데이터 흐름 방향을 지정합니다. 1 for in, 0 for out.

bmAttributes

두 개의 하위 비트는 엔드포인트 유형(USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK 또는 USB_ENDPOINT_TYPE_INTERRUPT 중 하나)을 지정합니다.

wMaxPacketSize

이 엔드포인트에서 또는 이 엔드포인트로 보낼 수 있는 최대 패킷 크기를 지정합니다.

bInterval

bInterval 값에는 인터럽트 및 등시 엔드포인트에 대한 폴링 간격이 포함됩니다. 다른 유형의 엔드포인트의 경우 이 값을 무시해야 합니다. 이 값은 펌웨어에서 디바이스의 구성을 반영합니다. 드라이버는 변경할 수 없습니다.

폴링 간격은 디바이스의 속도 및 호스트 컨트롤러 유형과 함께 드라이버가 인터럽트 또는 등시 전송을 시작해야 하는 빈도를 결정합니다. bInterval의 값은 고정된 시간을 나타내지 않습니다. 상대 값이며, 실제 폴링 빈도는 디바이스 및 USB 호스트 컨트롤러가 낮음, 전체 또는 고속으로 작동하는지 여부에 따라 달라집니다.

호스트 컨트롤러 또는 디바이스가 저속으로 작동하는 경우 인터럽트 전송(폴링 "마침표"라고도 함) 사이의 기간은 1밀리초 프레임 단위로 측정되며, 마침표는 다음 표에 표시된 대로 bInterval 의 값과 관련이 있습니다.

bInterval 값 폴링 기간(1밀리초 프레임) Interrupt
0~15 8 지원됩니다.
16-35 16 지원됩니다.
36-255 32 지원됩니다.
> 255 255 > 폴링 간격은 USB 사양에 의해 금지됩니다.
 

최대 속도로 작동할 수 있는 디바이스 및 호스트 컨트롤러의 경우 마침표는 1밀리초 프레임 단위로 측정되며, 마침표는 다음 표와 같이 bInterval 의 값과 관련이 있습니다.

bInterval 값 폴링 기간(1밀리초 프레임) Interrupt 등시
1 1 지원됨. 지원됨.
2~3개 2 지원됨. 지원됨.
4-7 4 지원됨. 지원됨.
8~15 8 지원됨. 지원됨.
16-31 16 지원됩니다. 지원되지 않습니다.
32-255 32 지원됩니다. 지원되지 않습니다.
> 255 255 > 폴링 간격은 USB 사양에 의해 금지됩니다.
 

고속으로 작동할 수 있는 디바이스 및 호스트 컨트롤러의 경우 해당 기간은 마이크로프레임 단위로 측정됩니다. 각 1밀리초 프레임에는 8개의 마이크로프레임이 있습니다. 마침표는 다음 표에 표시된 대로 마침표 = 2 ** (bInterval - 1) 수식으로 bInterval의 값과 관련이 있습니다.

bInterval 값 폴링 기간(마이크로프레임) Interrupt 등시
1 1 지원됨. 지원됨.
2 2 지원됨. 지원됨.
3 4 지원됨. 지원됨.
4 8 지원됨. 지원됨.
5 16 지원됩니다. 지원되지 않습니다.
6 32 지원됩니다. 지원되지 않습니다.
7~255 32 지원됩니다. 지원되지 않습니다.
> 255 폴링 간격 > 255는 USB 사양에 의해 금지됩니다.
 

이전 테이블의 마침표와 폴링 간격 간의 매핑은 Windows 2000 이상 운영 체제에서 유효합니다.

요구 사항

요구 사항
헤더 usbspec.h(Usb100.h 포함)

추가 정보

USB 구조체

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST