diff --git a/src/ftdi.c b/src/ftdi.c
index 8b589eb..6f2fbcc 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -418,8 +418,10 @@ int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct usb_device *dev)
     // set configuration (needed especially for windows)
     // tolerate EBUSY: one device with one configuration, but two interfaces
     //    and libftdi sessions to both interfaces (e.g. FT2232)
+    // NB: dev->config can be NULL on a valid device when using libusb-win32 on Windows 64
+    int conf_val = (dev->config != NULL)?dev->config[0].bConfigurationValue:1;
     if (dev->descriptor.bNumConfigurations > 0 &&
-            usb_set_configuration(ftdi->usb_dev, dev->config[0].bConfigurationValue) &&
+            usb_set_configuration(ftdi->usb_dev, conf_val) &&
             errno != EBUSY)
     {
         ftdi_usb_close_internal (ftdi);
