_URB_CONTROL_DESCRIPTOR_REQUEST 구조체(usb.h)
_URB_CONTROL_DESCRIPTOR_REQUEST 구조는 USB 클라이언트 드라이버가 USB 디바이스에서 설명자를 얻거나 설정하는 데 사용됩니다.
구문
struct _URB_CONTROL_DESCRIPTOR_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
USHORT Reserved1;
UCHAR Index;
UCHAR DescriptorType;
USHORT LanguageId;
USHORT Reserved2;
};
멤버
Hdr
URB 헤더 정보를 지정하는 _URB_HEADER 구조체에 대한 포인터입니다. Hdr.Function 은 다음 중 하나여야 합니다.
Hdr.Length는 와 같 sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
아야 합니다.
Reserved
예약되어 있습니다. 사용하지 마십시오.
Reserved0
예약되어 있습니다. 사용하지 마십시오.
TransferBufferLength
TransferBuffer에 지정되거나 TransferBufferMDL에 설명된 버퍼의 길이(바이트)를 지정합니다. 호스트 컨트롤러 드라이버는 이 멤버의 파이프에서 전송되거나 읽은 바이트 수를 반환합니다.
TransferBuffer
전송에 대한 상주 버퍼에 대한 포인터이거나 TransferBufferMDL에 MDL이 제공된 경우 NULL입니다.
TransferBufferMDL
상주 버퍼를 설명하는 MDL에 대한 포인터이거나 TransferBuffer에 버퍼가 제공된 경우 NULL입니다. 이 MDL은 페이지가 없는 풀에서 할당해야 합니다.
UrbLink
예약되어 있습니다. 사용하지 마십시오.
hca
예약되어 있습니다. 사용하지 마십시오.
Reserved1
예약되어 있습니다. 사용하지 마십시오.
Index
검색되거나 설정되는 설명자의 디바이스 정의 인덱스를 지정합니다.
DescriptorType
검색하거나 설정할 설명자의 유형을 나타냅니다. 다음 값 중 하나를 지정해야 합니다.
usbspec.h 상수 | 값 | USB 버전 |
---|---|---|
USB_DEVICE_DESCRIPTOR_TYPE | 0x01 | USB 1.1 |
USB_CONFIGURATION_DESCRIPTOR_TYPE | 0x02 | USB 1.1 |
USB_STRING_DESCRIPTOR_TYPE | 0x03 | USB 1.1 |
USB_INTERFACE_DESCRIPTOR_TYPE | 0x04 | USB 1.1 |
USB_ENDPOINT_DESCRIPTOR_TYPE | 0x05 | USB 1.1 |
USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE | 0x06 | USB 2.0 |
USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE | 0x07 | USB 2.0 |
USB_INTERFACE_POWER_DESCRIPTOR_TYPE | 0x08 | USB 2.0 |
USB_OTG_DESCRIPTOR_TYPE | 0x09 | USB 3.0 |
USB_DEBUG_DESCRIPTOR_TYPE | 0x0a | USB 3.0 |
USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE | 0x0b | USB 3.0 |
USB_BOS_DESCRIPTOR_TYPE | 0x0f | USB 3.0 |
USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE | 0x10 | USB 3.0 |
USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE | 0x30 | USB 3.0 |
USB_20_HUB_DESCRIPTOR_TYPE | 0x29 | USB 1.1 USB 2.0 |
USB_30_HUB_DESCRIPTOR_TYPE | 0x2a | USB 3.0 |
USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE | 0x31 | USB 3.1 |
LanguageId
descriptorType에서 USB_STRING_DESCRIPTOR_TYPE 설정될 때 검색할 설명자의 언어 ID를 지정합니다. DescriptorType의 다른 값에 대해 이 멤버를 0으로 설정해야 합니다.
Reserved2
예약되어 있습니다. 사용하지 마십시오.
설명
드라이버는 UsbBuildGetDescriptorRequest 서비스 루틴을 사용하여 이 URB의 형식을 지정할 수 있습니다. 호출자가 버퍼를 너무 작게 전달하여 모든 데이터를 저장할 수 없는 경우 버스 드라이버는 오류 없이 버퍼에 맞도록 데이터를 자릅니다.
호출자가 디바이스 설명자를 요청하면 버스 드라이버는 USB_DEVICE_DESCRIPTOR 데이터 구조를 반환합니다.
호출자가 구성 설명자를 요청하면 버스 드라이버는 USB_CONFIGURATION_DESCRIPTOR 구조에서 구성 설명자를 반환한 다음 해당 구성에 대한 인터페이스 및 엔드포인트 설명자를 반환합니다. 드라이버는 인터페이스 및 엔드포인트 설명자에 USB_INTERFACE_DESCRIPTOR 및 USB_ENDPOINT_DESCRIPTOR 구조체로 액세스할 수 있습니다. 또한 버스 드라이버는 클래스별 설명자 또는 디바이스별 설명자를 반환합니다. 시스템은 버 퍼 내에서 개별 설명자를 찾기 위해 USBD_ParseConfigurationDescriptorEx 및 USBD_ParseDescriptors 서비스 루틴을 제공합니다.
호출자가 문자열 설명자를 요청하면 버스 드라이버는 USB_STRING_DESCRIPTOR 구조를 반환합니다. 문자열 자체는 문자열 설명자의 가변 길이 bString 멤버에 있습니다.
이 구조체의 예약된 멤버는 불투명으로 처리되어야 하며 시스템 사용을 위해 예약되어 있어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | usb.h(Usb.h 포함) |