usb_fill_control_urb
时间: 2023-08-01 12:10:31 浏览: 145
`usb_fill_control_urb()`是一个函数,用于填充一个URB结构体,以便进行control类型的USB传输操作。函数原型如下:
```c
int usb_fill_control_urb(struct urb *urb, struct usb_device *udev,
unsigned int pipe, unsigned char *setup_packet,
void *transfer_buffer, int buffer_length,
usb_complete_t complete_fn, void *context);
```
各参数含义如下:
- `urb`:指向要填充的URB结构体的指针。
- `udev`:USB设备结构体指针。
- `pipe`:表示USB传输的目标端点,可以通过`usb_sndctrlpipe()`或`usb_rcvctrlpipe()`函数来获取。
- `setup_packet`:指向8字节的控制请求包的指针,包含了USB传输的控制信息。
- `transfer_buffer`:指向数据缓冲区的指针,用于存储控制传输的数据。
- `buffer_length`:表示数据缓冲区的大小。
- `complete_fn`:指向一个回调函数,用于在URB完成后通知应用程序。
- `context`:回调函数的传入参数。
`usb_fill_control_urb()`函数会根据函数传入的参数,填充一个URB结构体,以便进行control类型的USB传输操作。填充完成后,应用程序可以通过`usb_submit_urb()`函数将URB提交给USB驱动程序,由驱动程序将URB转换为USB传输命令,发送给USB总线。在传输完成后,驱动程序会调用应用程序指定的回调函数,通知应用程序传输结果。
阅读全文