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
19 USBPORT_DbgPrint(IN PVOID MiniPortExtension
,
24 DPRINT("USBPORT_DbgPrint: UNIMPLEMENTED. FIXME. \n");
30 USBPORT_TestDebugBreak(IN PVOID MiniPortExtension
)
32 DPRINT("USBPORT_TestDebugBreak: UNIMPLEMENTED. FIXME. \n");
38 USBPORT_AssertFailure(PVOID MiniPortExtension
,
39 PVOID FailedAssertion
,
44 DPRINT("USBPORT_AssertFailure: ... \n");
45 RtlAssert(FailedAssertion
, FileName
, LineNumber
, Message
);
51 USBPORT_BugCheck(IN PVOID MiniPortExtension
)
53 DPRINT1("USBPORT_BugCheck: FIXME \n");
54 //KeBugCheckEx(BUGCODE_USB_DRIVER, ...);
60 USBPORT_LogEntry(IN PVOID MiniPortExtension
,
67 DPRINT_MINIPORT("USBPORT_LogEntry: MiniPortExtension - %p, EnumTag - %lx, P1 - %lx, P2 - %lx, P3 - %lx\n",
79 USBPORT_DumpingDeviceDescriptor(IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor
)
81 if (!DeviceDescriptor
)
86 DPRINT_URB("Dumping Device Descriptor - %p\n", DeviceDescriptor
);
87 DPRINT_URB("bLength - %x\n", DeviceDescriptor
->bLength
);
88 DPRINT_URB("bDescriptorType - %x\n", DeviceDescriptor
->bDescriptorType
);
89 DPRINT_URB("bcdUSB - %x\n", DeviceDescriptor
->bcdUSB
);
90 DPRINT_URB("bDeviceClass - %x\n", DeviceDescriptor
->bDeviceClass
);
91 DPRINT_URB("bDeviceSubClass - %x\n", DeviceDescriptor
->bDeviceSubClass
);
92 DPRINT_URB("bDeviceProtocol - %x\n", DeviceDescriptor
->bDeviceProtocol
);
93 DPRINT_URB("bMaxPacketSize0 - %x\n", DeviceDescriptor
->bMaxPacketSize0
);
94 DPRINT_URB("idVendor - %x\n", DeviceDescriptor
->idVendor
);
95 DPRINT_URB("idProduct - %x\n", DeviceDescriptor
->idProduct
);
96 DPRINT_URB("bcdDevice - %x\n", DeviceDescriptor
->bcdDevice
);
97 DPRINT_URB("iManufacturer - %x\n", DeviceDescriptor
->iManufacturer
);
98 DPRINT_URB("iProduct - %x\n", DeviceDescriptor
->iProduct
);
99 DPRINT_URB("iSerialNumber - %x\n", DeviceDescriptor
->iSerialNumber
);
100 DPRINT_URB("bNumConfigurations - %x\n", DeviceDescriptor
->bNumConfigurations
);
105 USBPORT_DumpingConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor
)
107 PUSB_INTERFACE_DESCRIPTOR iDescriptor
;
108 PUSB_ENDPOINT_DESCRIPTOR Descriptor
;
111 if (!ConfigDescriptor
||
112 ConfigDescriptor
->bLength
< sizeof(USB_CONFIGURATION_DESCRIPTOR
))
117 DPRINT_URB("Dumping ConfigDescriptor - %p\n", ConfigDescriptor
);
118 DPRINT_URB("bLength - %x\n", ConfigDescriptor
->bLength
);
119 DPRINT_URB("bDescriptorType - %x\n", ConfigDescriptor
->bDescriptorType
);
120 DPRINT_URB("wTotalLength - %x\n", ConfigDescriptor
->wTotalLength
);
121 DPRINT_URB("bNumInterfaces - %x\n", ConfigDescriptor
->bNumInterfaces
);
122 DPRINT_URB("bConfigurationValue - %x\n", ConfigDescriptor
->bConfigurationValue
);
123 DPRINT_URB("iConfiguration - %x\n", ConfigDescriptor
->iConfiguration
);
124 DPRINT_URB("bmAttributes - %x\n", ConfigDescriptor
->bmAttributes
);
125 DPRINT_URB("MaxPower - %x\n", ConfigDescriptor
->MaxPower
);
127 iDescriptor
= (PUSB_INTERFACE_DESCRIPTOR
)((ULONG_PTR
)ConfigDescriptor
+
128 ConfigDescriptor
->bLength
);
130 if (iDescriptor
->bLength
< sizeof(USB_INTERFACE_DESCRIPTOR
))
135 DPRINT_URB("Dumping iDescriptor - %p\n", iDescriptor
);
136 DPRINT_URB("bLength - %x\n", iDescriptor
->bLength
);
137 DPRINT_URB("bDescriptorType - %x\n", iDescriptor
->bDescriptorType
);
138 DPRINT_URB("bInterfaceNumber - %x\n", iDescriptor
->bInterfaceNumber
);
139 DPRINT_URB("bAlternateSetting - %x\n", iDescriptor
->bAlternateSetting
);
140 DPRINT_URB("bNumEndpoints - %x\n", iDescriptor
->bNumEndpoints
);
141 DPRINT_URB("bInterfaceClass - %x\n", iDescriptor
->bInterfaceClass
);
142 DPRINT_URB("bInterfaceSubClass - %x\n", iDescriptor
->bInterfaceSubClass
);
143 DPRINT_URB("bInterfaceProtocol - %x\n", iDescriptor
->bInterfaceProtocol
);
144 DPRINT_URB("iInterface - %x\n", iDescriptor
->iInterface
);
146 Descriptor
= (PUSB_ENDPOINT_DESCRIPTOR
)((ULONG_PTR
)iDescriptor
+
147 iDescriptor
->bLength
);
149 for (ix
= 0; ix
< iDescriptor
->bNumEndpoints
; ix
++)
151 if (Descriptor
->bLength
< sizeof(USB_ENDPOINT_DESCRIPTOR
))
156 DPRINT_URB("Dumping Descriptor - %p\n", Descriptor
);
157 DPRINT_URB("bLength - %x\n", Descriptor
->bLength
);
158 DPRINT_URB("bDescriptorType - %x\n", Descriptor
->bDescriptorType
);
159 DPRINT_URB("bEndpointAddress - %x\n", Descriptor
->bEndpointAddress
);
160 DPRINT_URB("bmAttributes - %x\n", Descriptor
->bmAttributes
);
161 DPRINT_URB("wMaxPacketSize - %x\n", Descriptor
->wMaxPacketSize
);
162 DPRINT_URB("bInterval - %x\n", Descriptor
->bInterval
);
170 USBPORT_DumpingCapabilities(IN PDEVICE_CAPABILITIES Capabilities
)
177 DPRINT("Capabilities->Size - %x\n", Capabilities
->Size
);
178 DPRINT("Capabilities->Version - %x\n", Capabilities
->Version
);
180 DPRINT("Capabilities->DeviceD1 - %x\n", Capabilities
->DeviceD1
);
181 DPRINT("Capabilities->DeviceD2 - %x\n", Capabilities
->DeviceD2
);
182 DPRINT("Capabilities->LockSupported - %x\n", Capabilities
->LockSupported
);
183 DPRINT("Capabilities->EjectSupported - %x\n", Capabilities
->EjectSupported
);
184 DPRINT("Capabilities->Removable - %x\n", Capabilities
->Removable
);
185 DPRINT("Capabilities->DockDevice - %x\n", Capabilities
->DockDevice
);
186 DPRINT("Capabilities->UniqueID - %x\n", Capabilities
->UniqueID
);
187 DPRINT("Capabilities->SilentInstall - %x\n", Capabilities
->SilentInstall
);
188 DPRINT("Capabilities->RawDeviceOK - %x\n", Capabilities
->RawDeviceOK
);
189 DPRINT("Capabilities->SurpriseRemovalOK - %x\n", Capabilities
->SurpriseRemovalOK
);
191 DPRINT("Capabilities->Address - %x\n", Capabilities
->Address
);
192 DPRINT("Capabilities->UINumber - %x\n", Capabilities
->UINumber
);
194 DPRINT("Capabilities->DeviceState[0] - %x\n", Capabilities
->DeviceState
[0]);
195 DPRINT("Capabilities->DeviceState[1] - %x\n", Capabilities
->DeviceState
[1]);
196 DPRINT("Capabilities->DeviceState[2] - %x\n", Capabilities
->DeviceState
[2]);
197 DPRINT("Capabilities->DeviceState[3] - %x\n", Capabilities
->DeviceState
[3]);
198 DPRINT("Capabilities->DeviceState[4] - %x\n", Capabilities
->DeviceState
[4]);
199 DPRINT("Capabilities->DeviceState[5] - %x\n", Capabilities
->DeviceState
[5]);
200 DPRINT("Capabilities->DeviceState[6] - %x\n", Capabilities
->DeviceState
[6]);
202 DPRINT("Capabilities->SystemWake - %x\n", Capabilities
->SystemWake
);
203 DPRINT("Capabilities->DeviceWake - %x\n", Capabilities
->DeviceWake
);
205 DPRINT("Capabilities->D1Latency - %x\n", Capabilities
->D1Latency
);
206 DPRINT("Capabilities->D2Latency - %x\n", Capabilities
->D2Latency
);
207 DPRINT("Capabilities->D3Latency - %x\n", Capabilities
->D3Latency
);
212 USBPORT_DumpingSetupPacket(IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
)
214 DPRINT("SetupPacket->bmRequestType.B - %x\n", SetupPacket
->bmRequestType
.B
);
215 DPRINT("SetupPacket->bRequest - %x\n", SetupPacket
->bRequest
);
216 DPRINT("SetupPacket->wValue.LowByte - %x\n", SetupPacket
->wValue
.LowByte
);
217 DPRINT("SetupPacket->wValue.HiByte - %x\n", SetupPacket
->wValue
.HiByte
);
218 DPRINT("SetupPacket->wIndex.W - %x\n", SetupPacket
->wIndex
.W
);
219 DPRINT("SetupPacket->wLength - %x\n", SetupPacket
->wLength
);
224 USBPORT_DumpingURB(IN PURB Urb
)
226 PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
;
228 DPRINT_URB("UrbHeader.Length - %x\n", Urb
->UrbHeader
.Length
);
229 DPRINT_URB("UrbHeader.Function - %x\n", Urb
->UrbHeader
.Function
);
230 DPRINT_URB("UrbHeader.Status - %x\n", Urb
->UrbHeader
.Status
);
231 DPRINT_URB("UrbHeader.UsbdDeviceHandle - %p\n", Urb
->UrbHeader
.UsbdDeviceHandle
);
232 DPRINT_URB("UrbHeader.UsbdFlags - %x\n", Urb
->UrbHeader
.UsbdFlags
);
234 if (Urb
->UrbHeader
.Length
< 0x48)
239 DPRINT_URB("PipeHandle - %p\n", Urb
->UrbControlTransfer
.PipeHandle
);
240 DPRINT_URB("TransferFlags - %x\n", Urb
->UrbControlTransfer
.TransferFlags
);
241 DPRINT_URB("TransferBufferLength - %x\n", Urb
->UrbControlTransfer
.TransferBufferLength
);
242 DPRINT_URB("TransferBuffer - %p\n", Urb
->UrbControlTransfer
.TransferBuffer
);
243 DPRINT_URB("TransferBufferMDL - %p\n", Urb
->UrbControlTransfer
.TransferBufferMDL
);
244 DPRINT_URB("UrbLink - %p\n", Urb
->UrbControlTransfer
.UrbLink
);
246 if (Urb
->UrbHeader
.Length
< 0x50)
251 SetupPacket
= (PUSB_DEFAULT_PIPE_SETUP_PACKET
)&Urb
->UrbControlTransfer
.SetupPacket
;
252 USBPORT_DumpingSetupPacket(SetupPacket
);
257 USBPORT_DumpingIDs(IN PVOID Buffer
)
261 ULONG TotalLength
= 0;
267 DPRINT(" %S\n", Ptr
);
268 Length
= (ULONG
)wcslen(Ptr
) + 1;
271 TotalLength
+= Length
;
274 DPRINT("TotalLength: %hu\n", TotalLength
);