Author: mjmartin
Date: Fri Dec 31 12:26:12 2010
New Revision: 50231
URL: 
http://svn.reactos.org/svn/reactos?rev=50231&view=rev
Log:
[usb/usbehci]:
- Remove all hardware related structs from usbehci.h as they are now in hardware.h.
- Add debugging routines for usb descriptors, queue heads and transfer descriptors.
- This will break building usbehci, but not a problem as it is not included in the default
build. Will be fixed with later commit.
Modified:
    trunk/reactos/drivers/usb/usbehci/common.c
    trunk/reactos/drivers/usb/usbehci/usbehci.h
Modified: trunk/reactos/drivers/usb/usbehci/common.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbehci/common…
==============================================================================
--- trunk/reactos/drivers/usb/usbehci/common.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbehci/common.c [iso-8859-1] Fri Dec 31 12:26:12 2010
@@ -2,7 +2,7 @@
  * PROJECT:     ReactOS Universal Serial Bus Bulk Enhanced Host Controller Interface
  * LICENSE:     GPL - See COPYING in the top level directory
  * FILE:        drivers/usb/usbehci/common.c
- * PURPOSE:     Common operations in FDO/PDO.
+ * PURPOSE:     Common operations.
  * PROGRAMMERS:
  *              Michael Martin (michael.martin(a)reactos.org)
  */
@@ -12,7 +12,109 @@
 #include <wdmguid.h>
 #include <stdio.h>
-/* PUBLIC AND PRIVATE FUNCTIONS ***********************************************/
+VOID
+DumpDeviceDescriptor(PUSB_DEVICE_DESCRIPTOR DeviceDescriptor)
+{
+    DPRINT1("Dumping Device Descriptor %x\n", DeviceDescriptor);
+    DPRINT1("bLength %x\n", DeviceDescriptor->bLength);
+    DPRINT1("bDescriptorType %x\n", DeviceDescriptor->bDescriptorType);
+    DPRINT1("bcdUSB %x\n", DeviceDescriptor->bcdUSB);
+    DPRINT1("bDeviceClass %x\n", DeviceDescriptor->bDeviceClass);
+    DPRINT1("bDeviceSubClass %x\n", DeviceDescriptor->bDeviceSubClass);
+    DPRINT1("bDeviceProtocol %x\n", DeviceDescriptor->bDeviceProtocol);
+    DPRINT1("bMaxPacketSize0 %x\n", DeviceDescriptor->bMaxPacketSize0);
+    DPRINT1("idVendor %x\n", DeviceDescriptor->idVendor);
+    DPRINT1("idProduct %x\n", DeviceDescriptor->idProduct);
+    DPRINT1("bcdDevice %x\n", DeviceDescriptor->bcdDevice);
+    DPRINT1("iManufacturer %x\n", DeviceDescriptor->iManufacturer);
+    DPRINT1("iProduct %x\n", DeviceDescriptor->iProduct);
+    DPRINT1("iSerialNumber %x\n", DeviceDescriptor->iSerialNumber);
+    DPRINT1("bNumConfigurations %x\n",
DeviceDescriptor->bNumConfigurations);
+}
+
+VOID
+DumpFullConfigurationDescriptor(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor)
+{
+    PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
+    PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
+    LONG i, j;
+
+    DPRINT1("Dumping ConfigurationDescriptor %x\n", ConfigurationDescriptor);
+    DPRINT1("bLength %x\n", ConfigurationDescriptor->bLength);
+    DPRINT1("bDescriptorType %x\n",
ConfigurationDescriptor->bDescriptorType);
+    DPRINT1("wTotalLength %x\n", ConfigurationDescriptor->wTotalLength);
+    DPRINT1("bNumInterfaces %x\n", ConfigurationDescriptor->bNumInterfaces);
+    DPRINT1("bConfigurationValue %x\n",
ConfigurationDescriptor->bConfigurationValue);
+    DPRINT1("iConfiguration %x\n", ConfigurationDescriptor->iConfiguration);
+    DPRINT1("bmAttributes %x\n", ConfigurationDescriptor->bmAttributes);
+    DPRINT1("MaxPower %x\n", ConfigurationDescriptor->MaxPower);
+
+    InterfaceDescriptor = (PUSB_INTERFACE_DESCRIPTOR) ((ULONG_PTR)ConfigurationDescriptor
+ sizeof(USB_CONFIGURATION_DESCRIPTOR));
+
+    for (i=0; i < ConfigurationDescriptor->bNumInterfaces; i++)
+    {
+        DPRINT1("- Dumping InterfaceDescriptor %x\n", InterfaceDescriptor);
+        DPRINT1("  bLength %x\n", InterfaceDescriptor->bLength);
+        DPRINT1("  bDescriptorType %x\n",
InterfaceDescriptor->bDescriptorType);
+        DPRINT1("  bInterfaceNumber %x\n",
InterfaceDescriptor->bInterfaceNumber);
+        DPRINT1("  bAlternateSetting %x\n",
InterfaceDescriptor->bAlternateSetting);
+        DPRINT1("  bNumEndpoints %x\n", InterfaceDescriptor->bNumEndpoints);
+        DPRINT1("  bInterfaceClass %x\n",
InterfaceDescriptor->bInterfaceClass);
+        DPRINT1("  bInterfaceSubClass %x\n",
InterfaceDescriptor->bInterfaceSubClass);
+        DPRINT1("  bInterfaceProtocol %x\n",
InterfaceDescriptor->bInterfaceProtocol);
+        DPRINT1("  iInterface %x\n", InterfaceDescriptor->iInterface);
+
+        EndpointDescriptor = (PUSB_ENDPOINT_DESCRIPTOR) ((ULONG_PTR)InterfaceDescriptor +
sizeof(USB_INTERFACE_DESCRIPTOR));
+
+        for (j=0; j < InterfaceDescriptor->bNumEndpoints; j++)
+        {
+            DPRINT1("   bLength %x\n", EndpointDescriptor->bLength);
+            DPRINT1("   bDescriptorType %x\n",
EndpointDescriptor->bDescriptorType);
+            DPRINT1("   bEndpointAddress %x\n",
EndpointDescriptor->bEndpointAddress);
+            DPRINT1("   bmAttributes %x\n",
EndpointDescriptor->bmAttributes);
+            DPRINT1("   wMaxPacketSize %x\n",
EndpointDescriptor->wMaxPacketSize);
+            DPRINT1("   bInterval %x\n", EndpointDescriptor->bInterval);
+            EndpointDescriptor = (PUSB_ENDPOINT_DESCRIPTOR)
((ULONG_PTR)EndpointDescriptor + sizeof(USB_ENDPOINT_DESCRIPTOR));
+        }
+        InterfaceDescriptor = (PUSB_INTERFACE_DESCRIPTOR)(ULONG_PTR)EndpointDescriptor;
+    }
+
+}
+
+VOID
+DumpQueueHead(PQUEUE_HEAD QueueHead)
+{
+    DPRINT1("Dumping QueueHead %x\n", QueueHead);
+    DPRINT1("    CurrentLinkPointer %x\n", QueueHead->CurrentLinkPointer);
+    DPRINT1("    NextPointer %x\n", QueueHead->NextPointer);
+    DPRINT1("    AlternateNextPointer %x\n",
QueueHead->AlternateNextPointer);
+    DPRINT1("    HorizontalLinkPointer %x\n",
QueueHead->HorizontalLinkPointer);
+    DPRINT1("    Active %x\n", QueueHead->Token.Bits.Active);
+    DPRINT1("    Halted %x\n", QueueHead->Token.Bits.Halted);
+    DPRINT1("    DataBufferError %x\n",
QueueHead->Token.Bits.DataBufferError);
+    DPRINT1("    BabbleDetected %x\n",
QueueHead->Token.Bits.BabbleDetected);
+    DPRINT1("    TransactionError %x\n",
QueueHead->Token.Bits.TransactionError);
+    DPRINT1("    MissedMicroFrame %x\n",
QueueHead->Token.Bits.MissedMicroFrame);
+    DPRINT1("    PingState %x\n", QueueHead->Token.Bits.PingState);
+    DPRINT1("    SplitTransactionState %x\n",
QueueHead->Token.Bits.SplitTransactionState);
+    DPRINT1("    ErrorCounter %x\n", QueueHead->Token.Bits.ErrorCounter);
+    DPRINT1("    First TransferDescriptor %x\n",
QueueHead->TransferDescriptor);
+}
+
+VOID
+DumpTransferDescriptor(PQUEUE_TRANSFER_DESCRIPTOR TransferDescriptor)
+{
+    DPRINT1("Dumping Descriptor %x\n", TransferDescriptor);
+    DPRINT1("    Active %x\n", TransferDescriptor->Token.Bits.Active);
+    DPRINT1("    Halted %x\n", TransferDescriptor->Token.Bits.Halted);
+    DPRINT1("    DataBufferError %x\n",
TransferDescriptor->Token.Bits.DataBufferError);
+    DPRINT1("    BabbleDetected %x\n",
TransferDescriptor->Token.Bits.BabbleDetected);
+    DPRINT1("    TransactionError %x\n",
TransferDescriptor->Token.Bits.TransactionError);
+    DPRINT1("    MissedMicroFrame %x\n",
TransferDescriptor->Token.Bits.MissedMicroFrame);
+    DPRINT1("    PingState %x\n", TransferDescriptor->Token.Bits.PingState);
+    DPRINT1("    SplitTransactionState %x\n",
TransferDescriptor->Token.Bits.SplitTransactionState);
+    DPRINT1("    ErrorCounter %x\n",
TransferDescriptor->Token.Bits.ErrorCounter);
+}
 NTSTATUS NTAPI
 GetBusInterface(PDEVICE_OBJECT DeviceObject, PBUS_INTERFACE_STANDARD busInterface)
Modified: trunk/reactos/drivers/usb/usbehci/usbehci.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbehci/usbehc…
==============================================================================
--- trunk/reactos/drivers/usb/usbehci/usbehci.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbehci/usbehci.h [iso-8859-1] Fri Dec 31 12:26:12 2010
@@ -1,5 +1,6 @@
 #pragma once
+#include "hardware.h"
 #include <ntifs.h>
 #include <ntddk.h>
 #include <stdio.h>
@@ -15,67 +16,11 @@
 #define        DEVICESTARTED                   0x02
 #define        DEVICEBUSY                      0x04
 #define DEVICESTOPPED                  0x08
+#define DEVICESTALLED          0x10
 #define        MAX_USB_DEVICES                 127
 #define        EHCI_MAX_SIZE_TRANSFER          0x100000
-
-/* USB Command Register */
-#define        EHCI_USBCMD                     0x00
-#define        EHCI_USBSTS                     0x04
-#define        EHCI_USBINTR                    0x08
-#define        EHCI_FRINDEX                    0x0C
-#define        EHCI_CTRLDSSEGMENT              0x10
-#define        EHCI_PERIODICLISTBASE           0x14
-#define        EHCI_ASYNCLISTBASE              0x18
-#define        EHCI_CONFIGFLAG                 0x40
-#define        EHCI_PORTSC                     0x44
-
-/* USB Interrupt Register Flags 32 Bits */
-#define        EHCI_USBINTR_INTE               0x01
-#define        EHCI_USBINTR_ERR                0x02
-#define        EHCI_USBINTR_PC                 0x04
-#define        EHCI_USBINTR_FLROVR             0x08
-#define        EHCI_USBINTR_HSERR              0x10
-#define        EHCI_USBINTR_ASYNC              0x20
-/* Bits 6:31 Reserved */
-
-/* Status Register Flags 32 Bits */
-#define        EHCI_STS_INT                    0x01
-#define        EHCI_STS_ERR                    0x02
-#define        EHCI_STS_PCD                    0x04
-#define        EHCI_STS_FLR                    0x08
-#define        EHCI_STS_FATAL                  0x10
-#define        EHCI_STS_IAA                    0x20
-/* Bits 11:6 Reserved */
-#define        EHCI_STS_HALT                   0x1000
-#define        EHCI_STS_RECL                   0x2000
-#define        EHCI_STS_PSS                    0x4000
-#define        EHCI_STS_ASS                    0x8000
-#define        EHCI_ERROR_INT ( EHCI_STS_FATAL | EHCI_STS_ERR )
-
-
-/* Last bit in QUEUE ELEMENT TRANSFER DESCRIPTOR Next Pointer */
-/* Used for Queue Element Transfer Descriptor Pointers
-   and Queue Head Horizontal Link Pointers */
-#define TERMINATE_POINTER              0x01
-
-/* QUEUE ELEMENT TRANSFER DESCRIPTOR, Token defines and structs */
-
-/* PIDCodes for QETD_TOKEN
-OR with QUEUE_TRANSFER_DESCRIPTOR Token.PIDCode*/
-#define PID_CODE_OUT_TOKEN             0x00
-#define PID_CODE_IN_TOKEN              0x01
-#define PID_CODE_SETUP_TOKEN           0x02
-
-/* Split Transaction States
-OR with QUEUE_TRANSFER_DESCRIPTOR Token.SplitTransactionState */
-#define DO_START_SPLIT                 0x00
-#define DO_COMPLETE_SPLIT              0x01
-
-/* Ping States, OR with QUEUE_TRANSFER_DESCRIPTOR Token. */
-#define PING_STATE_DO_OUT              0x00
-#define PING_STATE_DO_PING             0x01
 #define C_HUB_LOCAL_POWER   0
 #define C_HUB_OVER_CURRENT  1
@@ -96,113 +41,6 @@
 #define PORT_INDICATOR      22
 #define USB_PORT_STATUS_CHANGE 0x4000
-/* QUEUE ELEMENT TRANSFER DESCRIPTOR TOKEN */
-typedef struct _QETD_TOKEN_BITS
-{
-    ULONG PingState:1;
-    ULONG SplitTransactionState:1;
-    ULONG MissedMicroFrame:1;
-    ULONG TransactionError:1;
-    ULONG BabbelDetected:1;
-    ULONG DataBufferError:1;
-    ULONG Halted:1;
-    ULONG Active:1;
-    ULONG PIDCode:2;
-    ULONG ErrorCounter:2;
-    ULONG CurrentPage:3;
-    ULONG InterruptOnComplete:1;
-    ULONG TotalBytesToTransfer:15;
-    ULONG DataToggle:1;
-} QETD_TOKEN_BITS, *PQETD_TOKEN_BITS;
-
-
-/* QUEUE ELEMENT TRANSFER DESCRIPTOR */
-typedef struct _QUEUE_TRANSFER_DESCRIPTOR
-{
-    ULONG NextPointer;
-    ULONG AlternateNextPointer;
-    union
-    {
-        QETD_TOKEN_BITS Bits;
-        ULONG DWord;
-    } Token;
-    ULONG BufferPointer[5];
-} QUEUE_TRANSFER_DESCRIPTOR, *PQUEUE_TRANSFER_DESCRIPTOR;
-
-/* EndPointSpeeds of END_POINT_CAPABILITIES */
-#define QH_ENDPOINT_FULLSPEED          0x00
-#define QH_ENDPOINT_LOWSPEED           0x01
-#define QH_ENDPOINT_HIGHSPEED          0x02
-
-typedef struct _END_POINT_CAPABILITIES1
-{
-    ULONG DeviceAddress:7;
-    ULONG InactiveOnNextTransaction:1;
-    ULONG EndPointNumber:4;
-    ULONG EndPointSpeed:2;
-    ULONG QEDTDataToggleControl:1;
-    ULONG HeadOfReclamation:1;
-    ULONG MaximumPacketLength:11;
-    ULONG ControlEndPointFlag:1;
-    ULONG NakCountReload:4;
-} END_POINT_CAPABILITIES1, *PEND_POINT_CAPABILITIES1;
-
-typedef struct _END_POINT_CAPABILITIES2
-{
-    ULONG InterruptScheduleMask:8;
-    ULONG SplitCompletionMask:8;
-    ULONG HubAddr:6;
-    ULONG PortNumber:6;
-    /* Multi */
-    ULONG NumberOfTransactionPerFrame:2;
-} END_POINT_CAPABILITIES2, *PEND_POINT_CAPABILITIES2;
-
-
-/* QUEUE HEAD defines and structs */
-
-/* QUEUE HEAD Select Types, OR with QUEUE_HEAD HorizontalLinkPointer */
-#define QH_TYPE_IDT                    0x00
-#define QH_TYPE_QH                     0x02
-#define QH_TYPE_SITD                   0x04
-#define QH_TYPE_FSTN                   0x06
-
-/* QUEUE HEAD */
-typedef struct _QUEUE_HEAD
-{
-    ULONG HorizontalLinkPointer;
-    END_POINT_CAPABILITIES1 EndPointCapabilities1;
-    END_POINT_CAPABILITIES2 EndPointCapabilities2;
-    /* TERMINATE_POINTER not valid for this member */
-    ULONG CurrentLinkPointer;
-    /* TERMINATE_POINTER valid */
-    ULONG QETDPointer;
-    /* TERMINATE_POINTER valid, bits 1:4 is NAK_COUNTER */
-    ULONG AlternateNextPointer;
-    /* Only DataToggle, InterruptOnComplete, ErrorCounter, PingState valid */
-    union
-    {
-        QETD_TOKEN_BITS Bits;
-        ULONG DWord;
-    } Token;
-    ULONG BufferPointer[5];
-} QUEUE_HEAD, *PQUEUE_HEAD;
-
-typedef struct _EHCI_SETUP_FORMAT
-{
-    UCHAR bmRequestType;
-    UCHAR bRequest;
-    USHORT wValue;
-    USHORT wIndex;
-    USHORT wLength;
-} EHCI_SETUP_FORMAT, *PEHCI_SETUP_FORMAT;
-
-typedef struct _STRING_DESCRIPTOR
-{
-  UCHAR bLength;            /* Size of this descriptor in bytes */
-  UCHAR bDescriptorType;       /* STRING Descriptor Type */
-  UCHAR bString[0];         /* UNICODE encoded string */
-} STRING_DESCRIPTOR, *PSTRING_DESCRIPTOR;
-
 typedef struct _USB_ENDPOINT
 {
     ULONG Flags;
@@ -234,102 +72,16 @@
     USB_DEVICE_SPEED DeviceSpeed;
     USB_DEVICE_TYPE DeviceType;
     USB_DEVICE_DESCRIPTOR DeviceDescriptor;
+    UNICODE_STRING LanguageIDs;
+    UNICODE_STRING iManufacturer;
+    UNICODE_STRING iProduct;
+    UNICODE_STRING iSerialNumber;
     USB_CONFIGURATION *ActiveConfig;
     USB_INTERFACE *ActiveInterface;
     USB_CONFIGURATION **Configs;
-
 } USB_DEVICE, *PUSB_DEVICE;
-/* USBCMD register 32 bits */
-typedef struct _EHCI_USBCMD_CONTENT
-{
-    ULONG Run : 1;
-    ULONG HCReset : 1;
-    ULONG FrameListSize : 2;
-    ULONG PeriodicEnable : 1;
-    ULONG AsyncEnable : 1;
-    ULONG DoorBell : 1;
-    ULONG LightReset : 1;
-    ULONG AsyncParkCount : 2;
-    ULONG Reserved : 1;
-    ULONG AsyncParkEnable : 1;
-    ULONG Reserved1 : 4;
-    ULONG IntThreshold : 8;
-    ULONG Reserved2 : 8;
-
-} EHCI_USBCMD_CONTENT, *PEHCI_USBCMD_CONTENT;
-
-typedef struct _EHCI_USBSTS_CONTENT
-{
-    ULONG USBInterrupt:1;
-    ULONG ErrorInterrupt:1;
-    ULONG DetectChangeInterrupt:1;
-    ULONG FrameListRolloverInterrupt:1;
-    ULONG HostSystemErrorInterrupt:1;
-    ULONG AsyncAdvanceInterrupt:1;
-    ULONG Reserved:6;
-    ULONG HCHalted:1;
-    ULONG Reclamation:1;
-    ULONG PeriodicScheduleStatus:1;
-    ULONG AsynchronousScheduleStatus:1;
-} EHCI_USBSTS_CONTEXT, *PEHCI_USBSTS_CONTEXT;
-
-typedef struct _EHCI_USBPORTSC_CONTENT
-{
-    ULONG CurrentConnectStatus:1;
-    ULONG ConnectStatusChange:1;
-    ULONG PortEnabled:1;
-    ULONG PortEnableChanged:1;
-    ULONG OverCurrentActive:1;
-    ULONG OverCurrentChange:1;
-    ULONG ForcePortResume:1;
-    ULONG Suspend:1;
-    ULONG PortReset:1;
-    ULONG Reserved:1;
-    ULONG LineStatus:2;
-    ULONG PortPower:1;
-    ULONG PortOwner:1;
-} EHCI_USBPORTSC_CONTENT, *PEHCI_USBPORTSC_CONTENT;
-
-typedef struct _EHCI_HCS_CONTENT
-{
-    ULONG PortCount : 4;
-    ULONG PortPowerControl: 1;
-    ULONG Reserved : 2;
-    ULONG PortRouteRules : 1;
-    ULONG PortPerCHC : 4;
-    ULONG CHCCount : 4;
-    ULONG PortIndicator : 1;
-    ULONG Reserved2 : 3;
-    ULONG DbgPortNum : 4;
-    ULONG Reserved3 : 8;
-
-} EHCI_HCS_CONTENT, *PEHCI_HCS_CONTENT;
-
-typedef struct _EHCI_HCC_CONTENT
-{
-    ULONG CurAddrBits : 1;
-    ULONG VarFrameList : 1;
-    ULONG ParkMode : 1;
-    ULONG Reserved : 1;
-    ULONG IsoSchedThreshold : 4;
-    ULONG EECPCapable : 8;
-    ULONG Reserved2 : 16;
-
-} EHCI_HCC_CONTENT, *PEHCI_HCC_CONTENT;
-
-typedef struct _EHCI_CAPS {
-    UCHAR Length;
-    UCHAR Reserved;
-    USHORT HCIVersion;
-    union
-    {
-        EHCI_HCS_CONTENT HCSParams;
-        ULONG HCSParamsLong;
-    };
-    ULONG HCCParams;
-    UCHAR PortRoute [8];
-} EHCI_CAPS, *PEHCI_CAPS;
+
 typedef struct _COMMON_DEVICE_EXTENSION
 {
@@ -380,26 +132,21 @@
     BUS_INTERFACE_STANDARD BusInterface;
-    EHCI_CAPS ECHICaps;
-
     union
     {
-        PULONG ResourcePort;
-        PULONG ResourceMemory;
+        ULONG ResourcePort;
+        ULONG ResourceMemory;
     };
-    PULONG PeriodicFramList;
-    PULONG AsyncListQueueHeadPtr;
-    PHYSICAL_ADDRESS PeriodicFramListPhysAddr;
-    PHYSICAL_ADDRESS AsyncListQueueHeadPtrPhysAddr;
-
-    FAST_MUTEX AsyncListMutex;
+    EHCI_HOST_CONTROLLER hcd;
+    PERIODICFRAMELIST PeriodicFrameList;
+
     FAST_MUTEX FrameListMutex;
     BOOLEAN AsyncComplete;
-    PULONG ResourceBase;
-    ULONG Size;
+    //PULONG ResourceBase;
+    //ULONG Size;
 } FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
 typedef struct _PDO_DEVICE_EXTENSION
@@ -425,6 +172,12 @@
     FAST_MUTEX ListLock;
 } PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
+typedef struct _WORKITEMDATA
+{
+    WORK_QUEUE_ITEM WorkItem;
+    PVOID Context;
+} WORKITEMDATA, *PWORKITEMDATA;
+
 VOID NTAPI
 UrbWorkerThread(PVOID Context);
@@ -464,7 +217,7 @@
 NTSTATUS NTAPI
 FdoDispatchInternalDeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-BOOLEAN
+USBD_STATUS
 ExecuteControlRequest(PFDO_DEVICE_EXTENSION DeviceExtension,
PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket, UCHAR Address, ULONG Port, PVOID Buffer, ULONG
BufferLength);
 VOID
@@ -485,5 +238,16 @@
 PUSB_DEVICE
 DeviceHandleToUsbDevice(PPDO_DEVICE_EXTENSION PdoDeviceExtension, PUSB_DEVICE_HANDLE
DeviceHandle);
-BOOLEAN
-ResetPort(PFDO_DEVICE_EXTENSION FdoDeviceExtension, UCHAR Port);
+VOID
+DumpDeviceDescriptor(PUSB_DEVICE_DESCRIPTOR DeviceDescriptor);
+
+VOID
+DumpFullConfigurationDescriptor(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor);
+
+
+VOID
+DumpTransferDescriptor(PQUEUE_TRANSFER_DESCRIPTOR TransferDescriptor);
+
+VOID
+DumpQueueHead(PQUEUE_HEAD QueueHead);
+