#pragma once
-#define NDEBUG
-#include <ntifs.h>
-#include <ntddk.h>
-#include <wdmguid.h>
+#include <wdm.h>
#include <hubbusif.h>
#include <usbbusif.h>
-#include <usbioctl.h>
-#include <usb.h>
-#include <stdio.h>
#include <usbdlib.h>
-#include <debug.h>
-//BROKEN: #include <usbprotocoldefs.h>
-#include <pseh/pseh2.h>
#define USB_HUB_TAG 'hbsu'
#define USB_MAXCHILDREN 127
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;
typedef struct _HUB_DEVICE_EXTENSION
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_PIPE_HANDLE PipeHandle;
PVOID RootHubHandle;
+ USB_BUS_INTERFACE_USBDI_V2 DeviceInterface;
UNICODE_STRING SymbolicLinkName;
+ ULONG InstanceCount;
+
} HUB_DEVICE_EXTENSION, *PHUB_DEVICE_EXTENSION;
// createclose.c
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
+NTSTATUS
+SubmitRequestToRootHub(
+ IN PDEVICE_OBJECT RootHubDeviceObject,
+ IN ULONG IoControlCode,
+ OUT PVOID OutParameter1,
+ OUT PVOID OutParameter2);
+
+NTSTATUS
+FDO_QueryInterface(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN OUT PUSB_BUS_INTERFACE_USBDI_V2 Interface);
+
// pdo.c
NTSTATUS
USBHUB_PdoHandlePnp(
IN PDEVICE_OBJECT RootHubDeviceObject,
IN ULONG PortId,
OUT PPORT_STATUS_CHANGE StatusChange);
+
+// hub_fdo.c
+
+NTSTATUS
+USBHUB_ParentFDOStartDevice(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);