ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

usbhub.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #define NDEBUG
00004 #include <ntifs.h>
00005 #include <ntddk.h>
00006 #include <wdmguid.h>
00007 #include <hubbusif.h>
00008 #include <usbbusif.h>
00009 #include <usbioctl.h>
00010 #include <usb.h>
00011 #include <stdio.h>
00012 #include <usbdlib.h>
00013 #include <debug.h>
00014 //BROKEN: #include <usbprotocoldefs.h>
00015 #include <pseh/pseh2.h>
00016 
00017 #define USB_HUB_TAG 'hbsu'
00018 #define USB_MAXCHILDREN 127
00019 
00020 // Lifted from broken header above
00021 #define C_HUB_LOCAL_POWER                    0
00022 #define C_HUB_OVER_CURRENT                   1
00023 #define PORT_CONNECTION                      0
00024 #define PORT_ENABLE                          1
00025 #define PORT_SUSPEND                         2
00026 #define PORT_OVER_CURRENT                    3
00027 #define PORT_RESET                           4
00028 #define PORT_POWER                           8
00029 #define PORT_LOW_SPEED                       9
00030 #define C_PORT_CONNECTION                    16
00031 #define C_PORT_ENABLE                        17
00032 #define C_PORT_SUSPEND                       18
00033 #define C_PORT_OVER_CURRENT                  19
00034 #define C_PORT_RESET                         20
00035 #define PORT_TEST                            21
00036 #define PORT_INDICATOR                       22
00037 
00038 typedef struct _PORT_STATUS_CHANGE
00039 {
00040     USHORT Status;
00041     USHORT Change;
00042 } PORT_STATUS_CHANGE, *PPORT_STATUS_CHANGE;
00043 
00044 typedef struct _WORK_ITEM_DATA
00045 {
00046     WORK_QUEUE_ITEM WorkItem;
00047     PVOID Context;
00048 } WORK_ITEM_DATA, *PWORK_ITEM_DATA;
00049 
00050 typedef struct
00051 {
00052     BOOLEAN IsFDO;
00053 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
00054 
00055 typedef struct _HUB_CHILDDEVICE_EXTENSION
00056 {
00057     COMMON_DEVICE_EXTENSION Common;
00058     PDEVICE_OBJECT ParentDeviceObject;
00059     PUSB_DEVICE_HANDLE UsbDeviceHandle;
00060     ULONG PortNumber;
00061     UNICODE_STRING usDeviceId;
00062     UNICODE_STRING usInstanceId;
00063     UNICODE_STRING usHardwareIds;
00064     UNICODE_STRING usCompatibleIds;
00065     UNICODE_STRING usTextDescription;
00066     UNICODE_STRING usLocationInformation;
00067     USB_DEVICE_DESCRIPTOR DeviceDesc;
00068     PUSB_CONFIGURATION_DESCRIPTOR FullConfigDesc;
00069     UNICODE_STRING SymbolicLinkName;
00070     USB_BUS_INTERFACE_USBDI_V2 DeviceInterface;
00071 } HUB_CHILDDEVICE_EXTENSION, *PHUB_CHILDDEVICE_EXTENSION;
00072 
00073 typedef struct _HUB_DEVICE_EXTENSION
00074 {
00075     COMMON_DEVICE_EXTENSION Common;
00076     PDEVICE_OBJECT LowerDeviceObject;
00077     ULONG ChildCount;
00078     PDEVICE_OBJECT ChildDeviceObject[USB_MAXCHILDREN];
00079     PDEVICE_OBJECT RootHubPhysicalDeviceObject;
00080     PDEVICE_OBJECT RootHubFunctionalDeviceObject;
00081 
00082     ULONG NumberOfHubs;
00083     KEVENT ResetComplete;
00084 
00085     PORT_STATUS_CHANGE *PortStatusChange;
00086     URB PendingSCEUrb;
00087     PIRP PendingSCEIrp;
00088 
00089     USB_BUS_INTERFACE_HUB_V5 HubInterface;
00090     USB_BUS_INTERFACE_USBDI_V2 UsbDInterface;
00091 
00092     USB_HUB_DESCRIPTOR HubDescriptor;
00093     USB_DEVICE_DESCRIPTOR HubDeviceDescriptor;
00094     USB_CONFIGURATION_DESCRIPTOR HubConfigDescriptor;
00095     USB_INTERFACE_DESCRIPTOR HubInterfaceDescriptor;
00096     USB_ENDPOINT_DESCRIPTOR HubEndPointDescriptor;
00097 
00098     USB_EXTHUB_INFORMATION_0 UsbExtHubInfo;
00099     USB_DEVICE_INFORMATION_0 DeviceInformation;
00100 
00101     USBD_CONFIGURATION_HANDLE ConfigurationHandle;
00102     USBD_PIPE_HANDLE PipeHandle;
00103     PVOID RootHubHandle;
00104     USB_BUS_INTERFACE_USBDI_V2 DeviceInterface;
00105 
00106 
00107     UNICODE_STRING SymbolicLinkName;
00108 } HUB_DEVICE_EXTENSION, *PHUB_DEVICE_EXTENSION;
00109 
00110 // createclose.c
00111 NTSTATUS NTAPI
00112 USBHUB_Create(
00113     IN PDEVICE_OBJECT DeviceObject,
00114     IN PIRP Irp);
00115 
00116 NTSTATUS NTAPI
00117 USBHUB_Close(
00118     IN PDEVICE_OBJECT DeviceObject,
00119     IN PIRP Irp);
00120 
00121 NTSTATUS NTAPI
00122 USBHUB_Cleanup(
00123     IN PDEVICE_OBJECT DeviceObject,
00124     IN PIRP Irp);
00125 
00126 // fdo.c
00127 NTSTATUS
00128 USBHUB_FdoHandleDeviceControl(
00129     PDEVICE_OBJECT DeviceObject,
00130     PIRP Irp);
00131 
00132 NTSTATUS
00133 USBHUB_FdoHandlePnp(
00134     PDEVICE_OBJECT DeviceObject,
00135     PIRP Irp);
00136 
00137 // misc.c
00138 NTSTATUS
00139 ForwardIrpAndWait(
00140     IN PDEVICE_OBJECT DeviceObject,
00141     IN PIRP Irp);
00142 
00143 NTSTATUS
00144 ForwardIrpAndForget(
00145     IN PDEVICE_OBJECT DeviceObject,
00146     IN PIRP Irp);
00147 
00148 NTSTATUS
00149 SubmitRequestToRootHub(
00150     IN PDEVICE_OBJECT RootHubDeviceObject,
00151     IN ULONG IoControlCode,
00152     OUT PVOID OutParameter1,
00153     OUT PVOID OutParameter2);
00154 
00155 NTSTATUS
00156 FDO_QueryInterface(
00157     IN PDEVICE_OBJECT DeviceObject,
00158     IN OUT PUSB_BUS_INTERFACE_USBDI_V2 Interface);
00159 
00160 // pdo.c
00161 NTSTATUS
00162 USBHUB_PdoHandlePnp(
00163     PDEVICE_OBJECT DeviceObject,
00164     PIRP Irp);
00165 
00166 NTSTATUS
00167 USBHUB_PdoHandleInternalDeviceControl(
00168     PDEVICE_OBJECT DeviceObject,
00169     PIRP Irp);
00170 
00171 VOID
00172 DumpDeviceDescriptor(
00173     PUSB_DEVICE_DESCRIPTOR DeviceDescriptor);
00174 
00175 VOID
00176 DumpConfigurationDescriptor(
00177     PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor);
00178 
00179 VOID
00180 DumpFullConfigurationDescriptor(
00181     PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor);
00182 
00183 NTSTATUS
00184 GetPortStatusAndChange(
00185     IN PDEVICE_OBJECT RootHubDeviceObject,
00186     IN ULONG PortId,
00187     OUT PPORT_STATUS_CHANGE StatusChange);
00188 
00189 // hub_fdo.c
00190 
00191 NTSTATUS
00192 USBHUB_ParentFDOStartDevice(
00193     IN PDEVICE_OBJECT DeviceObject,
00194     IN PIRP Irp);

Generated on Sun May 27 2012 04:28:32 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.