2 * PROJECT: ReactOS USB Port Driver
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: USBPort debugging functions
5 * COPYRIGHT: Copyright 2017 Vadim Galyant <vgal@rambler.ru>
13 #define NDEBUG_USBPORT_MINIPORT
14 #define NDEBUG_USBPORT_URB
15 //#define NDEBUG_USBPORT_USB2
20 USBPORT_DbgPrint(IN PVOID MiniPortExtension
,
25 DPRINT("USBPORT_DbgPrint: UNIMPLEMENTED. FIXME. \n");
31 USBPORT_TestDebugBreak(IN PVOID MiniPortExtension
)
33 DPRINT("USBPORT_TestDebugBreak: UNIMPLEMENTED. FIXME. \n");
39 USBPORT_AssertFailure(PVOID MiniPortExtension
,
40 PVOID FailedAssertion
,
45 DPRINT("USBPORT_AssertFailure: ... \n");
46 RtlAssert(FailedAssertion
, FileName
, LineNumber
, Message
);
52 USBPORT_BugCheck(IN PVOID MiniPortExtension
)
54 DPRINT1("USBPORT_BugCheck: FIXME \n");
55 //KeBugCheckEx(BUGCODE_USB_DRIVER, ...);
61 USBPORT_LogEntry(IN PVOID MiniPortExtension
,
68 DPRINT_MINIPORT("USBPORT_LogEntry: MiniPortExtension - %p, EnumTag - %lx, P1 - %lx, P2 - %lx, P3 - %lx\n",
80 USBPORT_DumpingDeviceDescriptor(IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor
)
82 if (!DeviceDescriptor
)
87 DPRINT_URB("Dumping Device Descriptor - %p\n", DeviceDescriptor
);
88 DPRINT_URB("bLength - %x\n", DeviceDescriptor
->bLength
);
89 DPRINT_URB("bDescriptorType - %x\n", DeviceDescriptor
->bDescriptorType
);
90 DPRINT_URB("bcdUSB - %x\n", DeviceDescriptor
->bcdUSB
);
91 DPRINT_URB("bDeviceClass - %x\n", DeviceDescriptor
->bDeviceClass
);
92 DPRINT_URB("bDeviceSubClass - %x\n", DeviceDescriptor
->bDeviceSubClass
);
93 DPRINT_URB("bDeviceProtocol - %x\n", DeviceDescriptor
->bDeviceProtocol
);
94 DPRINT_URB("bMaxPacketSize0 - %x\n", DeviceDescriptor
->bMaxPacketSize0
);
95 DPRINT_URB("idVendor - %x\n", DeviceDescriptor
->idVendor
);
96 DPRINT_URB("idProduct - %x\n", DeviceDescriptor
->idProduct
);
97 DPRINT_URB("bcdDevice - %x\n", DeviceDescriptor
->bcdDevice
);
98 DPRINT_URB("iManufacturer - %x\n", DeviceDescriptor
->iManufacturer
);
99 DPRINT_URB("iProduct - %x\n", DeviceDescriptor
->iProduct
);
100 DPRINT_URB("iSerialNumber - %x\n", DeviceDescriptor
->iSerialNumber
);
101 DPRINT_URB("bNumConfigurations - %x\n", DeviceDescriptor
->bNumConfigurations
);
106 USBPORT_DumpingConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor
)
108 PUSB_INTERFACE_DESCRIPTOR iDescriptor
;
109 PUSB_ENDPOINT_DESCRIPTOR Descriptor
;
112 if (!ConfigDescriptor
||
113 ConfigDescriptor
->bLength
< sizeof(USB_CONFIGURATION_DESCRIPTOR
))
118 DPRINT_URB("Dumping ConfigDescriptor - %p\n", ConfigDescriptor
);
119 DPRINT_URB("bLength - %x\n", ConfigDescriptor
->bLength
);
120 DPRINT_URB("bDescriptorType - %x\n", ConfigDescriptor
->bDescriptorType
);
121 DPRINT_URB("wTotalLength - %x\n", ConfigDescriptor
->wTotalLength
);
122 DPRINT_URB("bNumInterfaces - %x\n", ConfigDescriptor
->bNumInterfaces
);
123 DPRINT_URB("bConfigurationValue - %x\n", ConfigDescriptor
->bConfigurationValue
);
124 DPRINT_URB("iConfiguration - %x\n", ConfigDescriptor
->iConfiguration
);
125 DPRINT_URB("bmAttributes - %x\n", ConfigDescriptor
->bmAttributes
);
126 DPRINT_URB("MaxPower - %x\n", ConfigDescriptor
->MaxPower
);
128 iDescriptor
= (PUSB_INTERFACE_DESCRIPTOR
)((ULONG_PTR
)ConfigDescriptor
+
129 ConfigDescriptor
->bLength
);
131 if (iDescriptor
->bLength
< sizeof(USB_INTERFACE_DESCRIPTOR
))
136 DPRINT_URB("Dumping iDescriptor - %p\n", iDescriptor
);
137 DPRINT_URB("bLength - %x\n", iDescriptor
->bLength
);
138 DPRINT_URB("bDescriptorType - %x\n", iDescriptor
->bDescriptorType
);
139 DPRINT_URB("bInterfaceNumber - %x\n", iDescriptor
->bInterfaceNumber
);
140 DPRINT_URB("bAlternateSetting - %x\n", iDescriptor
->bAlternateSetting
);
141 DPRINT_URB("bNumEndpoints - %x\n", iDescriptor
->bNumEndpoints
);
142 DPRINT_URB("bInterfaceClass - %x\n", iDescriptor
->bInterfaceClass
);
143 DPRINT_URB("bInterfaceSubClass - %x\n", iDescriptor
->bInterfaceSubClass
);
144 DPRINT_URB("bInterfaceProtocol - %x\n", iDescriptor
->bInterfaceProtocol
);
145 DPRINT_URB("iInterface - %x\n", iDescriptor
->iInterface
);
147 Descriptor
= (PUSB_ENDPOINT_DESCRIPTOR
)((ULONG_PTR
)iDescriptor
+
148 iDescriptor
->bLength
);
150 for (ix
= 0; ix
< iDescriptor
->bNumEndpoints
; ix
++)
152 if (Descriptor
->bLength
< sizeof(USB_ENDPOINT_DESCRIPTOR
))
157 DPRINT_URB("Dumping Descriptor - %p\n", Descriptor
);
158 DPRINT_URB("bLength - %x\n", Descriptor
->bLength
);
159 DPRINT_URB("bDescriptorType - %x\n", Descriptor
->bDescriptorType
);
160 DPRINT_URB("bEndpointAddress - %x\n", Descriptor
->bEndpointAddress
);
161 DPRINT_URB("bmAttributes - %x\n", Descriptor
->bmAttributes
);
162 DPRINT_URB("wMaxPacketSize - %x\n", Descriptor
->wMaxPacketSize
);
163 DPRINT_URB("bInterval - %x\n", Descriptor
->bInterval
);
171 USBPORT_DumpingCapabilities(IN PDEVICE_CAPABILITIES Capabilities
)
178 DPRINT("Capabilities->Size - %x\n", Capabilities
->Size
);
179 DPRINT("Capabilities->Version - %x\n", Capabilities
->Version
);
181 DPRINT("Capabilities->DeviceD1 - %x\n", Capabilities
->DeviceD1
);
182 DPRINT("Capabilities->DeviceD2 - %x\n", Capabilities
->DeviceD2
);
183 DPRINT("Capabilities->LockSupported - %x\n", Capabilities
->LockSupported
);
184 DPRINT("Capabilities->EjectSupported - %x\n", Capabilities
->EjectSupported
);
185 DPRINT("Capabilities->Removable - %x\n", Capabilities
->Removable
);
186 DPRINT("Capabilities->DockDevice - %x\n", Capabilities
->DockDevice
);
187 DPRINT("Capabilities->UniqueID - %x\n", Capabilities
->UniqueID
);
188 DPRINT("Capabilities->SilentInstall - %x\n", Capabilities
->SilentInstall
);
189 DPRINT("Capabilities->RawDeviceOK - %x\n", Capabilities
->RawDeviceOK
);
190 DPRINT("Capabilities->SurpriseRemovalOK - %x\n", Capabilities
->SurpriseRemovalOK
);
192 DPRINT("Capabilities->Address - %x\n", Capabilities
->Address
);
193 DPRINT("Capabilities->UINumber - %x\n", Capabilities
->UINumber
);
195 DPRINT("Capabilities->DeviceState[0] - %x\n", Capabilities
->DeviceState
[0]);
196 DPRINT("Capabilities->DeviceState[1] - %x\n", Capabilities
->DeviceState
[1]);
197 DPRINT("Capabilities->DeviceState[2] - %x\n", Capabilities
->DeviceState
[2]);
198 DPRINT("Capabilities->DeviceState[3] - %x\n", Capabilities
->DeviceState
[3]);
199 DPRINT("Capabilities->DeviceState[4] - %x\n", Capabilities
->DeviceState
[4]);
200 DPRINT("Capabilities->DeviceState[5] - %x\n", Capabilities
->DeviceState
[5]);
201 DPRINT("Capabilities->DeviceState[6] - %x\n", Capabilities
->DeviceState
[6]);
203 DPRINT("Capabilities->SystemWake - %x\n", Capabilities
->SystemWake
);
204 DPRINT("Capabilities->DeviceWake - %x\n", Capabilities
->DeviceWake
);
206 DPRINT("Capabilities->D1Latency - %x\n", Capabilities
->D1Latency
);
207 DPRINT("Capabilities->D2Latency - %x\n", Capabilities
->D2Latency
);
208 DPRINT("Capabilities->D3Latency - %x\n", Capabilities
->D3Latency
);
213 USBPORT_DumpingSetupPacket(IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
)
215 DPRINT("SetupPacket->bmRequestType.B - %x\n", SetupPacket
->bmRequestType
.B
);
216 DPRINT("SetupPacket->bRequest - %x\n", SetupPacket
->bRequest
);
217 DPRINT("SetupPacket->wValue.LowByte - %x\n", SetupPacket
->wValue
.LowByte
);
218 DPRINT("SetupPacket->wValue.HiByte - %x\n", SetupPacket
->wValue
.HiByte
);
219 DPRINT("SetupPacket->wIndex.W - %x\n", SetupPacket
->wIndex
.W
);
220 DPRINT("SetupPacket->wLength - %x\n", SetupPacket
->wLength
);
225 USBPORT_DumpingURB(IN PURB Urb
)
227 PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
;
229 DPRINT_URB("UrbHeader.Length - %x\n", Urb
->UrbHeader
.Length
);
230 DPRINT_URB("UrbHeader.Function - %x\n", Urb
->UrbHeader
.Function
);
231 DPRINT_URB("UrbHeader.Status - %x\n", Urb
->UrbHeader
.Status
);
232 DPRINT_URB("UrbHeader.UsbdDeviceHandle - %p\n", Urb
->UrbHeader
.UsbdDeviceHandle
);
233 DPRINT_URB("UrbHeader.UsbdFlags - %x\n", Urb
->UrbHeader
.UsbdFlags
);
235 if (Urb
->UrbHeader
.Length
< 0x48)
240 DPRINT_URB("PipeHandle - %p\n", Urb
->UrbControlTransfer
.PipeHandle
);
241 DPRINT_URB("TransferFlags - %x\n", Urb
->UrbControlTransfer
.TransferFlags
);
242 DPRINT_URB("TransferBufferLength - %x\n", Urb
->UrbControlTransfer
.TransferBufferLength
);
243 DPRINT_URB("TransferBuffer - %p\n", Urb
->UrbControlTransfer
.TransferBuffer
);
244 DPRINT_URB("TransferBufferMDL - %p\n", Urb
->UrbControlTransfer
.TransferBufferMDL
);
245 DPRINT_URB("UrbLink - %p\n", Urb
->UrbControlTransfer
.UrbLink
);
247 if (Urb
->UrbHeader
.Length
< 0x50)
252 SetupPacket
= (PUSB_DEFAULT_PIPE_SETUP_PACKET
)&Urb
->UrbControlTransfer
.SetupPacket
;
253 USBPORT_DumpingSetupPacket(SetupPacket
);
258 USBPORT_DumpingIDs(IN PVOID Buffer
)
262 ULONG TotalLength
= 0;
268 DPRINT(" %S\n", Ptr
);
269 Length
= (ULONG
)wcslen(Ptr
) + 1;
272 TotalLength
+= Length
;
275 DPRINT("TotalLength: %hu\n", TotalLength
);
281 USBPORT_DumpingEndpointProperties(IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties
)
283 DPRINT_USB2("DeviceAddress - %X\n", EndpointProperties
->DeviceAddress
);
284 DPRINT_USB2("EndpointAddress - %X\n", EndpointProperties
->EndpointAddress
);
285 DPRINT_USB2("TotalMaxPacketSize - %X\n", EndpointProperties
->TotalMaxPacketSize
);
286 DPRINT_USB2("Period - %X\n", EndpointProperties
->Period
);
287 DPRINT_USB2("DeviceSpeed - %X\n", EndpointProperties
->DeviceSpeed
);
288 DPRINT_USB2("UsbBandwidth - %X\n", EndpointProperties
->UsbBandwidth
);
289 DPRINT_USB2("ScheduleOffset - %X\n", EndpointProperties
->ScheduleOffset
);
290 DPRINT_USB2("TransferType - %X\n", EndpointProperties
->TransferType
);
291 DPRINT_USB2("MaxTransferSize - %X\n", EndpointProperties
->MaxTransferSize
);
292 DPRINT_USB2("HubAddr - %X\n", EndpointProperties
->HubAddr
);
293 DPRINT_USB2("PortNumber - %X\n", EndpointProperties
->PortNumber
);
294 DPRINT_USB2("InterruptScheduleMask - %X\n", EndpointProperties
->InterruptScheduleMask
);
295 DPRINT_USB2("SplitCompletionMask - %X\n", EndpointProperties
->SplitCompletionMask
);
296 DPRINT_USB2("MaxPacketSize - %X\n", EndpointProperties
->MaxPacketSize
);
301 USBPORT_DumpingTtEndpoint(IN PUSB2_TT_ENDPOINT TtEndpoint
)
303 DPRINT_USB2("MaxPacketSize - %X\n", TtEndpoint
->MaxPacketSize
);
304 DPRINT_USB2("Period - %X\n", TtEndpoint
->Period
);
305 DPRINT_USB2("TtEndpointParams- %X\n", TtEndpoint
->TtEndpointParams
.AsULONG
);
306 DPRINT_USB2("CalcBusTime - %X\n", TtEndpoint
->CalcBusTime
);
307 DPRINT_USB2("StartTime - %X\n", TtEndpoint
->StartTime
);
308 DPRINT_USB2("ActualPeriod - %X\n", TtEndpoint
->ActualPeriod
);
309 DPRINT_USB2("StartFrame - %X\n", TtEndpoint
->StartFrame
);
310 DPRINT_USB2("StartMicroframe - %X\n", TtEndpoint
->StartMicroframe
);
311 DPRINT_USB2("Nums - %X\n", TtEndpoint
->Nums
.AsULONG
);
312 DPRINT_USB2("nextTtEndpoint - %X\n", TtEndpoint
->NextTtEndpoint
);