我希望有人可以帮助我解决这个问题。我做了一个应用程序来从智能手机读取一些数据并显示在应用程序中。它在我家很好用,所以我把它带到我朋友家给他看,但它没有用。所以在恐慌之后,我意识到由于连接到新PC而导致地址略有变化,这不是问题,winapi上必须有一个简单的解决方案。
\\?\usb#vid_045e&pid_0040#6&ff454f2&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\
我只找到了 C++ 的代码,而我的应用程序是 C 语言,所以没用。我还在谷歌上找到了 libusb,但是这并没有像我上面的例子那样返回完整的路径。
有没有像 GUID 搜索这样的简单修复方法?希望你能帮忙。
BR
这是我使用的 LIBUSB
#include <stdio.h>
#include <sys/types.h>
#include <windows.h>
#include <libusb.h>
static void print_devs(libusb_device **devs)
{
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;
}
printf("%04x:%04x (bus %d, device %d)\n",
desc.idVendor, desc.idProduct,
libusb_get_bus_number(dev), libusb_get_device_address(dev));
}
}
int main(void)
{
libusb_device **devs;
int r;
ssize_t cnt;
r = libusb_init(NULL);
if (r < 0)
return r;
cnt = libusb_get_device_list(NULL, &devs);
if (cnt < 0)
return (int) cnt;
print_devs(devs);
libusb_free_device_list(devs, 1);
libusb_exit(NULL);
system("pause");
return 0;
}
这只是返回例如
1033:0194(总线 1,设备 255)