libusb_submit_transfer提交成功后没有触发回调函数
大家好,libusb-1.0.18,主函数里重要函数部分:
。。。。。。
ctl_buf = (unsigned char*) malloc(LIBUSB_CONTROL_SETUP_SIZE );
if (!ctl_buf){
printf("Control buffer Malloc ERR\n");
return -ENOMEM;
}
libusb_fill_control_setup(ctl_buf, LIBUSB_RECIPIENT_DEVICE | LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_ENDPOINT_IN, LIBUSB_REQUEST_GET_DESCRIPTOR,
(1 << 8) | 0, 0, 0);
main_transfer = libusb_alloc_transfer(0);
if (!main_transfer) {
printf("main transfer is NULL\n");
return -ENOMEM;
}
libusb_fill_control_transfer(main_transfer, handle, ctl_buf, callback_fn, NULL, 0);
main_transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK | LIBUSB_TRANSFER_FREE_BUFFER | LIBUSB_TRANSFER_FREE_TRANSFER;
printf("Control_Proc submit transfer\n");
ret = libusb_submit_transfer(main_transfer);
printf("Control_Proc submit transfer OVER! return %d length %d actual len %d status %d\n", ret, main_transfer->length, main_transfer->actual_length, main_transfer->status);
。。。。。。
回调函数:
static void callback_fn(struct libusb_transfer *transfer)
{
if (transfer->status != LIBUSB_TRANSFER_COMPLETED) {
printf("callback transfer not completed!\n");
return ;
}
printf("callback status=%d length=%d actual_length=%d\n", transfer->status,
transfer->length, transfer->actual_length);
}
问题: libusb_submit_transfer虽返回0,但并没有触发回调函数,不知道为什么?望大侠指点!