12 // #include <usbprotocoldefs.h>
20 // the following includes are required to get kcom to compile
26 #include "interfaces.h"
29 // flags for handling USB_REQUEST_SET_FEATURE / USB_REQUEST_GET_FEATURE
32 #define PORT_SUSPEND 2
33 #define PORT_OVER_CURRENT 3
36 #define C_PORT_CONNECTION 16
37 #define C_PORT_ENABLE 17
38 #define C_PORT_SUSPEND 18
39 #define C_PORT_OVER_CURRENT 19
40 #define C_PORT_RESET 20
42 typedef struct _USB_ENDPOINT
44 USB_ENDPOINT_DESCRIPTOR EndPointDescriptor
;
48 } USB_ENDPOINT
, *PUSB_ENDPOINT
;
50 typedef struct _USB_INTERFACE
52 USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
;
53 USB_ENDPOINT
*EndPoints
;
54 } USB_INTERFACE
, *PUSB_INTERFACE
;
56 typedef struct _USB_CONFIGURATION
58 USB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
;
59 USB_INTERFACE
*Interfaces
;
60 } USB_CONFIGURATION
, *PUSB_CONFIGURATION
;
66 BOOLEAN IsFDO
; // is device a FDO or PDO
67 BOOLEAN IsHub
; // is device a hub / child - not yet used
68 PDISPATCHIRP Dispatcher
; // dispatches the code
69 }COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
72 // tag for allocations
74 #define TAG_USBEHCI 'ICHE'
77 // assert for c++ - taken from portcls
79 #define PC_ASSERT(exp) \
81 RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
86 NTSTATUS
CreateHCDController(PHCDCONTROLLER
*HcdController
);
91 NTSTATUS
CreateUSBHardware(PUSBHARDWAREDEVICE
*OutHardware
);
96 NTSTATUS NTAPI
SyncForwardIrp(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
97 NTSTATUS NTAPI
GetBusInterface(PDEVICE_OBJECT DeviceObject
, PBUS_INTERFACE_STANDARD busInterface
);
100 // root_hub_controller.cpp
102 NTSTATUS
CreateHubController(PHUBCONTROLLER
* OutHubController
);
105 // memory_manager.cpp
107 NTSTATUS
CreateDMAMemoryManager(PDMAMEMORYMANAGER
*OutMemoryManager
);
113 NTSTATUS
CreateUSBDevice(PUSBDEVICE
*OutDevice
);
118 NTSTATUS
CreateUSBQueue(PUSBQUEUE
*OutUsbQueue
);
123 NTSTATUS
InternalCreateUSBRequest(PUSBREQUEST
*OutRequest
);