Здравствуйте уважаемые!
мне нужно извлечь при помощи этой библиотеки серийный номер usb устройства. подскажите пожалуйста как пользоваться структурой:
static inline int libusb_get_string_descriptor(libusb_device_handle *dev,
uint8_t desc_index, uint16_t langid, unsigned char *data, int length)
{
return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,
LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_STRING << 8) | desc_index,
langid, data, length, 1000);
}
либо:
int libusb_get_string_descriptor_ascii(libusb_device_handle *dev,
uint8_t index, unsigned char *data, int length);
нижеследующий код компилируется, но при запуске выдает Segmentation fault:
static void print_devs(libusb_device **devs)
{
libusb_device *dev;
libusb_device_handle *DevHandle;
unsigned char *data;
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;
}
libusb_get_string_descriptor_ascii(DevHandle,desc.iSerialNumber,data,20);
printf("VID:%04x PID:%04x SN:%04x\n",
desc.idVendor, desc.idProduct, data);
}
}