大家好,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,但并没有触发回调函数,不知道为什么?望大侠指点!