- 论坛徽章:
- 0
|
大家好,小弟最近使用libusb在linux下向u盘中灌入数据(主要想测一下笔记本的性能),写数据调用到了libusb_bulk_transfer。我用了一个for循环,但是只有第一次写入成功。其他次都返回-7:argument list too long。另外运行一次之后,在次运行程序。每次循环都返回-7。请大牛们指点迷津,先在这里谢过了!
代码:
int UsbConfig::usbWrite()
{
//之前打开设备返回设备句柄运行正常。
int tmp;
tmp = libusb_kernel_driver_active(this->dev_handle,0);
if(tmp == 1){
tmp = libusb_detach_kernel_driver(this->dev_handle,0);
if(tmp)
cout<<strerror(-tmp)<<endl;
}
if(tmp = libusb_claim_interface(this->dev_handle,0)){
cout<<"usb_claim_interface error! "<<strerror(-tmp)<<endl;
return 0;
}
//write data to usb
unsigned char databuffer[512] = {1,1,2,3,4};
int transferred;
for(int i=0;i<5;i++)
{
tmp = libusb_bulk_transfer(this->dev_handle,EPOUT,databuffer,512,&transferred,1000);
if(tmp < 0)
cout<<strerror(-tmp)<<endl;
else
cout<<transferred<<endl;
}
输出结果:
第一次运行结果:
512
Argument list too long
Argument list too long
Argument list too long
Argument list too long
第二次:
Argument list too long
Argument list too long
Argument list too long
Argument list too long
Argument list too long
|
|