libusb_open在Windows 7上返回’LIBUSB_ERROR_NOT_SUPPORTED’
我一直在Linux上使用LibUSB开发USB驱动程序,但现在我想为Windows编译我的一个驱动程序(这是我第一次这样做).
我的环境 我正在使用MinGW编译器(也使用Dev-cpp IDE)在Windows 7上工作,我正在使用从this link下载的预编译的libusb库. 我的设备:这是一款HID触控设备.因此Windows不需要驱动程序.我有一个额外的端点来获取某些调试数据. 我的代码: 我已编译代码列出连接到我的机器的所有设备和USB设备,代码可以工作.现在我添加代码来打开设备,以便获得设备句柄并开始通信.但该函数返回-12即LIBUSB_ERROR_NOT_SUPPORTED. 我该如何解决这个问题? 我在互联网上搜索并没有找到解决这个问题的明确方法.虽然它的代码在Linux上运行得很好. P.S.:我在下面添加了整个代码. DoList();函数工作正常,但GetTRSDevice();功能在libusb_open(dev,& handle);失败. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <libusb.h> libusb_device_handle* deviceHandle = NULL; int DoList(); libusb_device_handle* GetTRSDevice(void); int main() { int ret = libusb_init(NULL); if (ret < 0) { printf("Failed to init libusb"); return ret; } DoList(); deviceHandle = GetTRSDevice(); if(!deviceHandle) { printf("Failed to locate device"); goto fail_dev_open; } printf("Device opened"); libusb_close(deviceHandle); fail_dev_open: libusb_exit(NULL); return(ret); } int DoList() { libusb_device **devs; ssize_t cnt; cnt = libusb_get_device_list(NULL,&devs); if (cnt < 0) return (int) cnt; libusb_device *dev; int i = 0; while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int r = libusb_get_device_descriptor(dev,&desc); if (r < 0) { fprintf(stderr,"failed to get device descriptor"); return(-1); } printf("%04x:%04x (bus %d,device %d)n",desc.idVendor,desc.idProduct,libusb_get_bus_number(dev),libusb_get_device_address(dev)); } libusb_free_device_list(devs,1); return 0; } libusb_device_handle* GetTRSDevice(void) { int i = 0; ssize_t cnt; libusb_device *dev; libusb_device **devs; libusb_device_handle* handle = NULL; cnt = libusb_get_device_list(NULL,&devs); if (cnt < 0) { printf("Failed libusb_get_device_list"); return(0); } while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int ret = libusb_get_device_descriptor(dev,&desc); if (ret < 0) { printf("Failed libusb_get_device_descriptor"); continue; } if(desc.idVendor == 0X238f && desc.idProduct == 1) { int ret = libusb_open(dev,&handle); if (ret < 0) { printf("Failed libusb_open: %dnr",ret); break; } #ifndef WIN32 libusb_detach_kernel_driver(handle,0); #endif ret = libusb_claim_interface(handle,0); if (ret < 0) { libusb_close(handle); handle=NULL; break; } break; } } libusb_free_device_list(devs,1); return(handle); }
您似乎需要安装winusb驱动程序 – libusb可以获取有关没有此驱动程序的设备的信息,但它无法打开它们.
http://libusb.6.n5.nabble.com/LIBUSB-ERROR-NOT-SUPPORTED-td5617169.html:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 老电脑的福音-Windows10企业ltsc最新安装包和永久激活密钥
- windows-7 – Windows 7 VPN客户端默认IPsec配置?
- windows下配置apache+php+mysql时出现问题的处理方法
- Windows下安装redis并且设置密码
- 在Windows中的python选项卡完成
- windows-server-2003 – 为什么我的服务器每五分钟通过PC扬
- 在windows netstat结果中“::”表示什么?
- windows – goapp serve:无法找到dev_appserver.py
- windows – Win32自定义消息框
- Windows – 由于MSVCR110.dll,MS Visual Studio 2012终端无