summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dickens <christopher.a.dickens@gmail.com>2020-04-17 14:21:44 -0700
committerChris Dickens <christopher.a.dickens@gmail.com>2020-04-17 14:21:44 -0700
commitfc5132ca74d4a6fc9a8ae942451bc107b25497be (patch)
treee9f99cea82262467f6ccd984d3f2a8d9606d42d4
parente873677b9196b191d6cdbdf9783c6d6a18379249 (diff)
downloadlibusb-fc5132ca74d4a6fc9a8ae942451bc107b25497be.tar.gz
core: Change pointer type from 'unsigned char' to 'void'
This removes the need for pointer casts when calling backend functions. Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r--libusb/descriptor.c6
-rw-r--r--libusb/libusbi.h17
-rw-r--r--libusb/os/darwin_usb.c8
-rw-r--r--libusb/os/haiku_usb_raw.cpp8
-rw-r--r--libusb/os/linux_usbfs.c19
-rw-r--r--libusb/os/netbsd_usb.c23
-rw-r--r--libusb/os/null_usb.c6
-rw-r--r--libusb/os/openbsd_usb.c25
-rw-r--r--libusb/os/sunos_usb.c12
-rw-r--r--libusb/os/windows_common.c8
-rw-r--r--libusb/os/windows_common.h8
-rw-r--r--libusb/os/windows_usbdk.c10
-rw-r--r--libusb/os/windows_winusb.c21
-rw-r--r--libusb/version_nano.h2
14 files changed, 82 insertions, 91 deletions
diff --git a/libusb/descriptor.c b/libusb/descriptor.c
index b65557f..c926544 100644
--- a/libusb/descriptor.c
+++ b/libusb/descriptor.c
@@ -489,8 +489,7 @@ int usbi_device_cache_descriptor(libusb_device *dev)
{
int r, host_endian = 0;
- r = usbi_backend.get_device_descriptor(dev, (unsigned char *) &dev->device_descriptor,
- &host_endian);
+ r = usbi_backend.get_device_descriptor(dev, &dev->device_descriptor, &host_endian);
if (r < 0)
return r;
@@ -669,9 +668,10 @@ int API_EXPORTED libusb_get_config_descriptor_by_value(libusb_device *dev,
uint8_t bConfigurationValue, struct libusb_config_descriptor **config)
{
int r, idx;
- unsigned char *buf = NULL;
if (usbi_backend.get_config_descriptor_by_value) {
+ void *buf;
+
r = usbi_backend.get_config_descriptor_by_value(dev,
bConfigurationValue, &buf);
if (r < 0)
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 9d1528f..88db762 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -872,8 +872,8 @@ struct usbi_os_backend {
*
* Return 0 on success or a LIBUSB_ERROR code on failure.
*/
- int (*get_device_descriptor)(struct libusb_device *device,
- unsigned char *buffer, int *host_endian);
+ int (*get_device_descriptor)(struct libusb_device *device, void *buffer,
+ int *host_endian);
/* Get the ACTIVE configuration descriptor for a device.
*
@@ -895,7 +895,7 @@ struct usbi_os_backend {
* - another LIBUSB_ERROR code on other failure
*/
int (*get_active_config_descriptor)(struct libusb_device *device,
- unsigned char *buffer, size_t len);
+ void *buffer, size_t len);
/* Get a specific configuration descriptor for a device.
*
@@ -918,7 +918,7 @@ struct usbi_os_backend {
* Return the length read on success or a LIBUSB_ERROR code on failure.
*/
int (*get_config_descriptor)(struct libusb_device *device,
- uint8_t config_index, unsigned char *buffer, size_t len);
+ uint8_t config_index, void *buffer, size_t len);
/* Like get_config_descriptor but then by bConfigurationValue instead
* of by index.
@@ -933,7 +933,7 @@ struct usbi_os_backend {
* or a LIBUSB_ERROR code on failure.
*/
int (*get_config_descriptor_by_value)(struct libusb_device *device,
- uint8_t bConfigurationValue, unsigned char **buffer);
+ uint8_t bConfigurationValue, void **buffer);
/* Get the bConfigurationValue for the active configuration for a device.
* Optional. This should only be implemented if you can retrieve it from
@@ -1067,12 +1067,11 @@ struct usbi_os_backend {
/* Allocate persistent DMA memory for the given device, suitable for
* zerocopy. May return NULL on failure. Optional to implement.
*/
- unsigned char *(*dev_mem_alloc)(struct libusb_device_handle *handle,
- size_t len);
+ void *(*dev_mem_alloc)(struct libusb_device_handle *handle, size_t len);
/* Free memory allocated by dev_mem_alloc. */
- int (*dev_mem_free)(struct libusb_device_handle *handle,
- unsigned char *buffer, size_t len);
+ int (*dev_mem_free)(struct libusb_device_handle *handle, void *buffer,
+ size_t len);
/* Determine if a kernel driver is active on an interface. Optional.
*
diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c
index bbac912..61722c0 100644
--- a/libusb/os/darwin_usb.c
+++ b/libusb/os/darwin_usb.c
@@ -75,7 +75,7 @@ static const char *darwin_device_class = kIOUSBDeviceClassName;
/* async event thread */
static pthread_t libusb_darwin_at;
-static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len);
+static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len);
static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface);
static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface);
static int darwin_reset_device(struct libusb_device_handle *dev_handle);
@@ -661,7 +661,7 @@ static void darwin_exit (struct libusb_context *ctx) {
pthread_mutex_unlock (&libusb_darwin_init_mutex);
}
-static int darwin_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer, int *host_endian) {
+static int darwin_get_device_descriptor(struct libusb_device *dev, void *buffer, int *host_endian) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
/* return cached copy */
@@ -692,7 +692,7 @@ static int get_configuration_index (struct libusb_device *dev, int config_value)
return LIBUSB_ERROR_NOT_FOUND;
}
-static int darwin_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len) {
+static int darwin_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
int config_index;
@@ -707,7 +707,7 @@ static int darwin_get_active_config_descriptor(struct libusb_device *dev, unsign
return darwin_get_config_descriptor (dev, (UInt8)config_index, buffer, len);
}
-static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len) {
+static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
IOUSBConfigurationDescriptorPtr desc;
IOReturn kresult;
diff --git a/libusb/os/haiku_usb_raw.cpp b/libusb/os/haiku_usb_raw.cpp
index e0a8c9a..b4348e2 100644
--- a/libusb/os/haiku_usb_raw.cpp
+++ b/libusb/os/haiku_usb_raw.cpp
@@ -30,7 +30,7 @@ USBRoster gUsbRoster;
int32 gInitCount = 0;
static int haiku_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int
haiku_init(struct libusb_context *ctx)
@@ -75,7 +75,7 @@ haiku_close(struct libusb_device_handle *dev_handle)
}
static int
-haiku_get_device_descriptor(struct libusb_device *device, unsigned char *buffer, int *host_endian)
+haiku_get_device_descriptor(struct libusb_device *device, void *buffer, int *host_endian)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
memcpy(buffer, dev->Descriptor(), LIBUSB_DT_DEVICE_SIZE);
@@ -83,14 +83,14 @@ haiku_get_device_descriptor(struct libusb_device *device, unsigned char *buffer,
}
static int
-haiku_get_active_config_descriptor(struct libusb_device *device, unsigned char *buffer, size_t len)
+haiku_get_active_config_descriptor(struct libusb_device *device, void *buffer, size_t len)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
return haiku_get_config_descriptor(device, dev->ActiveConfigurationIndex(), buffer, len);
}
static int
-haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, unsigned char *buffer, size_t len)
+haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, void *buffer, size_t len)
{
USBDevice *dev = *((USBDevice **)usbi_get_device_priv(device));
const usb_configuration_descriptor *config = dev->ConfigurationDescriptor(config_index);
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index 435a38b..14963d2 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -517,7 +517,7 @@ static int read_sysfs_attr(struct libusb_context *ctx,
}
static int op_get_device_descriptor(struct libusb_device *dev,
- unsigned char *buffer, int *host_endian)
+ void *buffer, int *host_endian)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
@@ -694,7 +694,7 @@ static int seek_to_next_config(struct libusb_device *dev,
}
static int op_get_config_descriptor_by_value(struct libusb_device *dev,
- uint8_t value, unsigned char **buffer)
+ uint8_t value, void **buffer)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
unsigned char *descriptors = priv->descriptors;
@@ -724,11 +724,11 @@ static int op_get_config_descriptor_by_value(struct libusb_device *dev,
}
static int op_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buffer, size_t len)
+ void *buffer, size_t len)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
int r, config;
- unsigned char *config_desc;
+ void *config_desc;
if (priv->sysfs_dir) {
r = sysfs_get_active_config(dev, &config);
@@ -751,7 +751,7 @@ static int op_get_active_config_descriptor(struct libusb_device *dev,
}
static int op_get_config_descriptor(struct libusb_device *dev,
- uint8_t config_index, unsigned char *buffer, size_t len)
+ uint8_t config_index, void *buffer, size_t len)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
unsigned char *descriptors = priv->descriptors;
@@ -1570,11 +1570,10 @@ static int op_free_streams(struct libusb_device_handle *handle,
endpoints, num_endpoints);
}
-static unsigned char *op_dev_mem_alloc(struct libusb_device_handle *handle,
- size_t len)
+static void *op_dev_mem_alloc(struct libusb_device_handle *handle, size_t len)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
- unsigned char *buffer;
+ void *buffer;
buffer = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, hpriv->fd, 0);
if (buffer == MAP_FAILED) {
@@ -1584,8 +1583,8 @@ static unsigned char *op_dev_mem_alloc(struct libusb_device_handle *handle,
return buffer;
}
-static int op_dev_mem_free(struct libusb_device_handle *handle,
- unsigned char *buffer, size_t len)
+static int op_dev_mem_free(struct libusb_device_handle *handle, void *buffer,
+ size_t len)
{
if (munmap(buffer, len) != 0) {
usbi_err(HANDLE_CTX(handle), "free dev mem failed, errno=%d", errno);
diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c
index dab7692..91f2472 100644
--- a/libusb/os/netbsd_usb.c
+++ b/libusb/os/netbsd_usb.c
@@ -36,7 +36,7 @@ struct device_priv {
char devnode[16];
int fd;
- unsigned char *cdesc; /* active config descriptor */
+ usb_config_descriptor_t *cdesc; /* active config descriptor */
usb_device_descriptor_t ddesc; /* usb device descriptor */
};
@@ -52,12 +52,12 @@ static int netbsd_get_device_list(struct libusb_context *,
static int netbsd_open(struct libusb_device_handle *);
static void netbsd_close(struct libusb_device_handle *);
-static int netbsd_get_device_descriptor(struct libusb_device *, unsigned char *,
+static int netbsd_get_device_descriptor(struct libusb_device *, void *,
int *);
static int netbsd_get_active_config_descriptor(struct libusb_device *,
- unsigned char *, size_t);
+ void *, size_t);
static int netbsd_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int netbsd_get_configuration(struct libusb_device_handle *, int *);
static int netbsd_set_configuration(struct libusb_device_handle *, int);
@@ -162,7 +162,6 @@ netbsd_get_device_list(struct libusb_context * ctx,
goto error;
}
- dpriv->cdesc = NULL;
if (_cache_active_config_descriptor(dev, fd)) {
err = errno;
goto error;
@@ -221,7 +220,7 @@ netbsd_close(struct libusb_device_handle *handle)
}
int
-netbsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+netbsd_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
@@ -235,13 +234,11 @@ netbsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
int
netbsd_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
- usb_config_descriptor_t *ucd;
- ucd = (usb_config_descriptor_t *) dpriv->cdesc;
- len = MIN(len, UGETW(ucd->wTotalLength));
+ len = MIN(len, UGETW(dpriv->cdesc->wTotalLength));
usbi_dbg("len %d", len);
@@ -252,7 +249,7 @@ netbsd_get_active_config_descriptor(struct libusb_device *dev,
int
netbsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_full_desc ufd;
@@ -477,7 +474,7 @@ _cache_active_config_descriptor(struct libusb_device *dev, int fd)
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_config_desc ucd;
struct usb_full_desc ufd;
- unsigned char* buf;
+ void *buf;
int len;
usbi_dbg("fd %d", fd);
@@ -490,7 +487,7 @@ _cache_active_config_descriptor(struct libusb_device *dev, int fd)
usbi_dbg("active bLength %d", ucd.ucd_desc.bLength);
len = UGETW(ucd.ucd_desc.wTotalLength);
- buf = malloc(len);
+ buf = malloc((size_t)len);
if (buf == NULL)
return (LIBUSB_ERROR_NO_MEM);
diff --git a/libusb/os/null_usb.c b/libusb/os/null_usb.c
index bb6d981..8952f3b 100644
--- a/libusb/os/null_usb.c
+++ b/libusb/os/null_usb.c
@@ -37,7 +37,7 @@ null_close(struct libusb_device_handle *handle)
}
static int
-null_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+null_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
@@ -45,14 +45,14 @@ null_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
static int
null_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
static int
null_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
diff --git a/libusb/os/openbsd_usb.c b/libusb/os/openbsd_usb.c
index e10d656..8f9c4e7 100644
--- a/libusb/os/openbsd_usb.c
+++ b/libusb/os/openbsd_usb.c
@@ -36,7 +36,7 @@ struct device_priv {
char *devname; /* name of the ugen(4) node */
int fd; /* device file descriptor */
- unsigned char *cdesc; /* active config descriptor */
+ usb_config_descriptor_t *cdesc; /* active config descriptor */
usb_device_descriptor_t ddesc; /* usb device descriptor */
};
@@ -52,12 +52,12 @@ static int obsd_get_device_list(struct libusb_context *,
static int obsd_open(struct libusb_device_handle *);
static void obsd_close(struct libusb_device_handle *);
-static int obsd_get_device_descriptor(struct libusb_device *, unsigned char *,
+static int obsd_get_device_descriptor(struct libusb_device *, void *,
int *);
static int obsd_get_active_config_descriptor(struct libusb_device *,
- unsigned char *, size_t);
+ void *, size_t);
static int obsd_get_config_descriptor(struct libusb_device *, uint8_t,
- unsigned char *, size_t);
+ void *, size_t);
static int obsd_get_configuration(struct libusb_device_handle *, int *);
static int obsd_set_configuration(struct libusb_device_handle *, int);
@@ -180,7 +180,6 @@ obsd_get_device_list(struct libusb_context * ctx,
dpriv = usbi_get_device_priv(dev);
dpriv->fd = -1;
- dpriv->cdesc = NULL;
dpriv->devname = udevname;
dd.udd_bus = di.udi_bus;
@@ -256,7 +255,7 @@ obsd_close(struct libusb_device_handle *handle)
}
int
-obsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
+obsd_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
@@ -270,12 +269,11 @@ obsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf,
int
obsd_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct device_priv *dpriv = usbi_get_device_priv(dev);
- usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc;
- len = MIN(len, UGETW(ucd->wTotalLength));
+ len = MIN(len, UGETW(dpriv->cdesc->wTotalLength));
usbi_dbg("len %zu", len);
@@ -286,7 +284,7 @@ obsd_get_active_config_descriptor(struct libusb_device *dev,
int
obsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- unsigned char *buf, size_t len)
+ void *buf, size_t len)
{
struct usb_device_fdesc udf;
int fd, err;
@@ -316,9 +314,8 @@ int
obsd_get_configuration(struct libusb_device_handle *handle, int *config)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
- usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc;
- *config = ucd->bConfigurationValue;
+ *config = dpriv->cdesc->bConfigurationValue;
usbi_dbg("bConfigurationValue %d", *config);
@@ -515,7 +512,7 @@ _cache_active_config_descriptor(struct libusb_device *dev)
struct device_priv *dpriv = usbi_get_device_priv(dev);
struct usb_device_cdesc udc;
struct usb_device_fdesc udf;
- unsigned char* buf;
+ void *buf;
int fd, len, err;
if ((fd = _bus_open(dev->bus_number)) < 0)
@@ -535,7 +532,7 @@ _cache_active_config_descriptor(struct libusb_device *dev)
usbi_dbg("active bLength %d", udc.udc_desc.bLength);
len = UGETW(udc.udc_desc.wTotalLength);
- buf = malloc(len);
+ buf = malloc((size_t)len);
if (buf == NULL)
return (LIBUSB_ERROR_NO_MEM);
diff --git a/libusb/os/sunos_usb.c b/libusb/os/sunos_usb.c
index 0d8198f..9a148ca 100644
--- a/libusb/os/sunos_usb.c
+++ b/libusb/os/sunos_usb.c
@@ -63,11 +63,11 @@ static int sunos_get_device_list(struct libusb_context *,
static int sunos_open(struct libusb_device_handle *);
static void sunos_close(struct libusb_device_handle *);
static int sunos_get_device_descriptor(struct libusb_device *,
- uint8_t *, int *);
+ void *, int *);
static int sunos_get_active_config_descriptor(struct libusb_device *,
- uint8_t *, size_t);
+ void *, size_t);
static int sunos_get_config_descriptor(struct libusb_device *, uint8_t,
- uint8_t *, size_t);
+ void *, size_t);
static int sunos_get_configuration(struct libusb_device_handle *, int *);
static int sunos_set_configuration(struct libusb_device_handle *, int);
static int sunos_claim_interface(struct libusb_device_handle *, int);
@@ -1020,7 +1020,7 @@ sunos_close(struct libusb_device_handle *handle)
}
int
-sunos_get_device_descriptor(struct libusb_device *dev, uint8_t *buf,
+sunos_get_device_descriptor(struct libusb_device *dev, void *buf,
int *host_endian)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(dev);
@@ -1032,7 +1032,7 @@ sunos_get_device_descriptor(struct libusb_device *dev, uint8_t *buf,
int
sunos_get_active_config_descriptor(struct libusb_device *dev,
- uint8_t *buf, size_t len)
+ void *buf, size_t len)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(dev);
struct libusb_config_descriptor *cfg;
@@ -1076,7 +1076,7 @@ sunos_get_active_config_descriptor(struct libusb_device *dev,
int
sunos_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
- uint8_t *buf, size_t len)
+ void *buf, size_t len)
{
/* XXX */
return(sunos_get_active_config_descriptor(dev, buf, len));
diff --git a/libusb/os/windows_common.c b/libusb/os/windows_common.c
index 3d1175d..9352091 100644
--- a/libusb/os/windows_common.c
+++ b/libusb/os/windows_common.c
@@ -599,28 +599,28 @@ static void windows_close(struct libusb_device_handle *dev_handle)
}
static int windows_get_device_descriptor(struct libusb_device *dev,
- unsigned char *buffer, int *host_endian)
+ void *buffer, int *host_endian)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_device_descriptor(dev, buffer);
}
static int windows_get_active_config_descriptor(struct libusb_device *dev,
- unsigned char *buffer, size_t len)
+ void *buffer, size_t len)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_active_config_descriptor(dev, buffer, len);
}
static int windows_get_config_descriptor(struct libusb_device *dev,
- uint8_t config_index, unsigned char *buffer, size_t len)
+ uint8_t config_index, void *buffer, size_t len)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_config_descriptor(dev, config_index, buffer, len);
}
static int windows_get_config_descriptor_by_value(struct libusb_device *dev,
- uint8_t bConfigurationValue, unsigned char **buffer)
+ uint8_t bConfigurationValue, void **buffer)
{
struct windows_context_priv *priv = usbi_get_context_priv(DEVICE_CTX(dev));
return priv->backend->get_config_descriptor_by_value(dev, bConfigurationValue, buffer);
diff --git a/libusb/os/windows_common.h b/libusb/os/windows_common.h
index b2da4d9..e48f7a9 100644
--- a/libusb/os/windows_common.h
+++ b/libusb/os/windows_common.h
@@ -299,13 +299,13 @@ struct windows_backend {
struct discovered_devs **discdevs);
int (*open)(struct libusb_device_handle *dev_handle);
void (*close)(struct libusb_device_handle *dev_handle);
- int (*get_device_descriptor)(struct libusb_device *device, unsigned char *buffer);
+ int (*get_device_descriptor)(struct libusb_device *device, void *buffer);
int (*get_active_config_descriptor)(struct libusb_device *device,
- unsigned char *buffer, size_t len);
+ void *buffer, size_t len);
int (*get_config_descriptor)(struct libusb_device *device,
- uint8_t config_index, unsigned char *buffer, size_t len);
+ uint8_t config_index, void *buffer, size_t len);
int (*get_config_descriptor_by_value)(struct libusb_device *device,
- uint8_t bConfigurationValue, unsigned char **buffer);
+ uint8_t bConfigurationValue, void **buffer);
int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config);
int (*set_configuration)(struct libusb_device_handle *dev_handle, int config);
int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number);
diff --git a/libusb/os/windows_usbdk.c b/libusb/os/windows_usbdk.c
index ac11496..15783b0 100644
--- a/libusb/os/windows_usbdk.c
+++ b/libusb/os/windows_usbdk.c
@@ -357,7 +357,7 @@ func_exit:
return r;
}
-static int usbdk_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer)
+static int usbdk_get_device_descriptor(struct libusb_device *dev, void *buffer)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
@@ -366,7 +366,7 @@ static int usbdk_get_device_descriptor(struct libusb_device *dev, unsigned char
return LIBUSB_SUCCESS;
}
-static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len)
+static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
@@ -380,7 +380,7 @@ static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config
}
static int usbdk_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue,
- unsigned char **buffer)
+ void **buffer)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
@@ -389,7 +389,7 @@ static int usbdk_get_config_descriptor_by_value(struct libusb_device *dev, uint8
for (index = 0; index < dev->device_descriptor.bNumConfigurations; index++) {
config_header = priv->config_descriptors[index];
if (config_header->bConfigurationValue == bConfigurationValue) {
- *buffer = (unsigned char *)priv->config_descriptors[index];
+ *buffer = priv->config_descriptors[index];
return (int)config_header->wTotalLength;
}
}
@@ -397,7 +397,7 @@ static int usbdk_get_config_descriptor_by_value(struct libusb_device *dev, uint8
return LIBUSB_ERROR_NOT_FOUND;
}
-static int usbdk_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len)
+static int usbdk_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev);
diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
index ec7c025..d2e3893 100644
--- a/libusb/os/windows_winusb.c
+++ b/libusb/os/windows_winusb.c
@@ -1515,7 +1515,7 @@ static int winusb_get_device_list(struct libusb_context *ctx, struct discovered_
return r;
}
-static int winusb_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer)
+static int winusb_get_device_descriptor(struct libusb_device *dev, void *buffer)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
@@ -1523,24 +1523,23 @@ static int winusb_get_device_descriptor(struct libusb_device *dev, unsigned char
return LIBUSB_SUCCESS;
}
-static int winusb_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len)
+static int winusb_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
- size_t size;
if ((priv->config_descriptor == NULL) || (priv->config_descriptor[config_index] == NULL))
return LIBUSB_ERROR_NOT_FOUND;
config_header = priv->config_descriptor[config_index];
- size = MIN(config_header->wTotalLength, len);
- memcpy(buffer, priv->config_descriptor[config_index], size);
- return (int)size;
+ len = MIN(len, config_header->wTotalLength);
+ memcpy(buffer, config_header, len);
+ return (int)len;
}
static int winusb_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue,
- unsigned char **buffer)
+ void **buffer)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
PUSB_CONFIGURATION_DESCRIPTOR config_header;
@@ -1554,7 +1553,7 @@ static int winusb_get_config_descriptor_by_value(struct libusb_device *dev, uint
if (config_header == NULL)
continue;
if (config_header->bConfigurationValue == bConfigurationValue) {
- *buffer = (unsigned char *)priv->config_descriptor[index];
+ *buffer = config_header;
return (int)config_header->wTotalLength;
}
}
@@ -1565,10 +1564,10 @@ static int winusb_get_config_descriptor_by_value(struct libusb_device *dev, uint
/*
* return the cached copy of the active config descriptor
*/
-static int winusb_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len)
+static int winusb_get_active_config_descriptor(struct libusb_device *dev, void *buffer, size_t len)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev);
- unsigned char *config_desc;
+ void *config_desc;
int r;
if (priv->active_config == 0)
@@ -1578,7 +1577,7 @@ static int winusb_get_active_config_descriptor(struct libusb_device *dev, unsign
if (r < 0)
return r;
- len = MIN((size_t)r, len);
+ len = MIN(len, (size_t)r);
memcpy(buffer, config_desc, len);
return (int)len;
}
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 49b7a05..6188f4f 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11507
+#define LIBUSB_NANO 11508