+#define USB_MAXCHILDREN 127
+
+// Lifted from broken header above
+#define C_HUB_LOCAL_POWER 0
+#define C_HUB_OVER_CURRENT 1
+#define PORT_CONNECTION 0
+#define PORT_ENABLE 1
+#define PORT_SUSPEND 2
+#define PORT_OVER_CURRENT 3
+#define PORT_RESET 4
+#define PORT_POWER 8
+#define PORT_LOW_SPEED 9
+#define C_PORT_CONNECTION 16
+#define C_PORT_ENABLE 17
+#define C_PORT_SUSPEND 18
+#define C_PORT_OVER_CURRENT 19
+#define C_PORT_RESET 20
+#define PORT_TEST 21
+#define PORT_INDICATOR 22
+
+typedef struct _PORT_STATUS_CHANGE
+{
+ USHORT Status;
+ USHORT Change;
+} PORT_STATUS_CHANGE, *PPORT_STATUS_CHANGE;
+
+typedef struct _WORK_ITEM_DATA
+{
+ WORK_QUEUE_ITEM WorkItem;
+ PVOID Context;
+} WORK_ITEM_DATA, *PWORK_ITEM_DATA;
+
+typedef struct
+{
+ BOOLEAN IsFDO;
+} COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
+
+typedef struct _HUB_CHILDDEVICE_EXTENSION
+{
+ COMMON_DEVICE_EXTENSION Common;
+ PDEVICE_OBJECT ParentDeviceObject;
+ PUSB_DEVICE_HANDLE UsbDeviceHandle;
+ ULONG PortNumber;
+ UNICODE_STRING usDeviceId;
+ UNICODE_STRING usInstanceId;
+ UNICODE_STRING usHardwareIds;
+ UNICODE_STRING usCompatibleIds;
+ UNICODE_STRING usTextDescription;
+ UNICODE_STRING usLocationInformation;
+ USB_DEVICE_DESCRIPTOR DeviceDesc;
+ PUSB_CONFIGURATION_DESCRIPTOR FullConfigDesc;
+ UNICODE_STRING SymbolicLinkName;
+ USB_BUS_INTERFACE_USBDI_V2 DeviceInterface;
+ USB_DEVICE_INFORMATION_0 DeviceInformation;
+} HUB_CHILDDEVICE_EXTENSION, *PHUB_CHILDDEVICE_EXTENSION;