libusb_init函数体
时间: 2023-09-03 12:12:19 浏览: 207
libusb_init函数是libusb库中的一个函数,它用于初始化libusb库。函数体如下所示:
```
int LIBUSB_CALL libusb_init(libusb_context **context)
{
int r = 0;
struct libusb_context *ctx;
/* allocate a new context */
ctx = calloc(1, sizeof(struct libusb_context));
if (!ctx)
return LIBUSB_ERROR_NO_MEM;
r = usbi_backend.init(ctx);
if (r < 0) {
free(ctx);
return r;
}
/* set default log handler */
libusb_set_log_cb(ctx, NULL, LIBUSB_LOG_LEVEL_WARNING);
/* set default debug handler, can be overridden by user */
libusb_set_debug(ctx, LIBUSB_LOG_LEVEL_NONE);
*context = ctx;
return 0;
}
```
该函数首先分配一个新的libusb_context结构体,然后调用usbi_backend.init函数进行底层初始化。如果初始化成功,该函数会设置默认的日志处理程序和调试处理程序,并将分配的libusb_context结构体指针赋值给传递给函数的context指针。如果初始化失败,则会释放分配的内存并返回错误码。
阅读全文