libusb 无法获取设备句柄

libusb can't get device handle

#include <windows.h>
#include <devguid.h>
#include <initguid.h>
#include <wtypes.h>
#include <WinBase.h>
#include <stdio.h>
#include "libusb.h"
#include "resource.h"

int main(int argc, char *argv[]) {

    libusb_device *dev;
    int i = 0, j = 0;
    libusb_device **devs;
    int r;
    ssize_t cnt;
    USHORT VendorID = 0x04b4;
    USHORT ProductID = 0x00f3;
    libusb_device_handle * DeviceHandle;

    AllocConsole();

    r = libusb_init(NULL);
    if (r < 0)
        return r;

    cnt = libusb_get_device_list(NULL, &devs);
    if (cnt < 0)
        return (int)cnt;

    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;
        }
        if (desc.idVendor == VendorID &&
            desc.idProduct == ProductID){

            int err = libusb_open(dev,
                &DeviceHandle);
            if (err < 0){
                printf("GetLastError : %d\n", GetLastError());
                return 1;
                }
            libusb_free_device_list(devs, 1);

            libusb_close(DeviceHandle);
        }
    }
    return 0;
}

这是我的代码。问题是我无法获得设备句柄。 &DeviceHandle 只是很多 0,得到最后一个错误并没有给我任何东西。如果这很重要,我会尝试处理 cypress fx3。在我走到这一步之前,它可以完美地编译和运行。欢迎任何关于这个问题的想法。

你打给libusb_open(dev, &DeviceHandle); returns LIBUSB_ERROR_NOT_SUPPORTED.

This post 表明您可能缺少 winusb 驱动程序。