libusb_fill_interrupt_transfer函数体
时间: 2023-08-30 18:11:04 浏览: 108
libusb_fill_interrupt_transfer函数的函数体如下所示:
```
int libusb_fill_interrupt_transfer(struct libusb_transfer *transfer,
libusb_device_handle *dev_handle,
unsigned char endpoint, unsigned char *data,
int length, libusb_transfer_cb_fn callback,
void *user_data, unsigned int timeout)
{
if (!transfer || !dev_handle || !data || !callback)
return LIBUSB_ERROR_INVALID_PARAM;
memset(transfer, 0, sizeof(struct libusb_transfer));
transfer->dev_handle = dev_handle;
transfer->endpoint = endpoint;
transfer->type = LIBUSB_TRANSFER_TYPE_INTERRUPT;
transfer->buffer = data;
transfer->length = length;
transfer->callback = callback;
transfer->user_data = user_data;
transfer->timeout = timeout;
return LIBUSB_SUCCESS;
}
```
该函数用于填充一个传输结构体libusb_transfer,用于发起一个中断传输。该函数的参数包括:
- transfer:指向要填充的传输结构体的指针。
- dev_handle:USB设备的句柄。
- endpoint:要使用的USB端点。
- data:传输的数据缓冲区。
- length:传输的数据长度。
- callback:传输完成时调用的回调函数。
- user_data:传输完成时传递给回调函数的用户数据。
- timeout:传输的超时时间。
该函数首先会检查传入的参数是否合法,如果其中任何一个参数为NULL,则返回LIBUSB_ERROR_INVALID_PARAM错误码。然后,将传输结构体进行清零。接着,将传输结构体的各个字段设置为对应的值,最后返回LIBUSB_SUCCESS表示成功。
阅读全文