控制端点上的 IN 和 OUT 数据包
IN and OUT packets on control endpoint
可以控制端点接收IN和OUT数据包
作为一个正常的端点?或者它可以
只接收 SETUP 数据包后面的 IN 和 OUT 数据包?
设置数据包始终是控制传输的一部分。
主机总是通过发送设置数据包来启动控制传输。 IN 或 OUT 数据将跟随它。通常用于控制传输的 USB API 包括设置数据包和数据缓冲区。例如,libusb 函数如下所示:
int libusb_control_transfer (libusb_device_handle * dev_handle,
uint8_t bmRequestType,
uint8_t bRequest,
uint16_t wValue,
uint16_t wIndex,
unsigned char *data,
uint16_t wLength,
unsigned int timeout
)
bmRequestType、bRequest、wValue、wIndex 和 wLength 参数用于设置数据包。
Microsoft 的以下文档也应该有助于理解控制传输的工作原理:
https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-control-transfer
可以控制端点接收IN和OUT数据包 作为一个正常的端点?或者它可以 只接收 SETUP 数据包后面的 IN 和 OUT 数据包?
设置数据包始终是控制传输的一部分。 主机总是通过发送设置数据包来启动控制传输。 IN 或 OUT 数据将跟随它。通常用于控制传输的 USB API 包括设置数据包和数据缓冲区。例如,libusb 函数如下所示:
int libusb_control_transfer (libusb_device_handle * dev_handle,
uint8_t bmRequestType,
uint8_t bRequest,
uint16_t wValue,
uint16_t wIndex,
unsigned char *data,
uint16_t wLength,
unsigned int timeout
)
bmRequestType、bRequest、wValue、wIndex 和 wLength 参数用于设置数据包。
Microsoft 的以下文档也应该有助于理解控制传输的工作原理: https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-control-transfer