接続されている USB デバイスに関する情報を取得するために、VS2010 で libusb-win32 で記述された単純なコードを実行しようとしています。うまく実行できません。
#include <stdio.h>
#include <string.h>
#include "lusb0_usb.h"
int verbose = 1;
int print_device(struct usb_device *dev, int level);
int main(int argc, char *argv[])
{
struct usb_bus *bus;
if (argc > 1 && !strcmp(argv[1], "-v"))
verbose = 1;
usb_init();
usb_set_debug(255);
int nBusses = usb_find_busses();
int nDevices = usb_find_devices();
if(nDevices <=0) return 0;
for (bus = usb_get_busses(); bus; bus = bus->next)
{
if (bus->root_dev && !verbose)
print_device(bus->root_dev, 0);
else
{
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next)
print_device(dev, 0);
}
}
return 0;
}
プロジェクト構成は Win32、デバッグで、x86 dll & lib ファイルを使用しています。コードをコンパイルできます。はusb_find_busses()
1usb_find_devices()
を返し、0 を返します。正しい数値が得られない理由がわかりません。bus->root_dev を出力すると、次の出力が出力されます。
Dev #0: 0000 - 0000
bLength: 18
bDescriptorType: 01h
bcdUSB: 0200h
bDeviceClass: 09h
bDeviceSubClass: 00h
bDeviceProtocol: 00h
bMaxPacketSize0: 40h
idVendor: 0000h
idProduct: 0000h
bcdDevice: 0100h
iManufacturer: 0
iProduct: 0
iSerialNumber: 0
bNumConfigurations: 0
Couldn't retrieve descriptors
inf-wizard.exe を実行したところ、ベンダー ID とデバイス ID を持つすべてのデバイスを確認できました。何が欠けているのかわかりません。