https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0f8425ed442c604c9f720…
commit 0f8425ed442c604c9f72038e4b10dc9b5c02a397
Author: Vadim Galyant <vgal(a)rambler.ru>
AuthorDate: Mon Nov 27 20:35:03 2017 +0900
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sun Jan 21 19:35:39 2018 +0100
[USBPORT] Add USBPORT_GetTt().
---
drivers/usb/usbport/device.c | 70 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
diff --git a/drivers/usb/usbport/device.c b/drivers/usb/usbport/device.c
index aa70c184cd..fdeac97846 100644
--- a/drivers/usb/usbport/device.c
+++ b/drivers/usb/usbport/device.c
@@ -885,6 +885,76 @@ USBPORT_AbortTransfers(IN PDEVICE_OBJECT FdoDevice,
}
}
+PUSB2_TT_EXTENSION
+NTAPI
+USBPORT_GetTt(IN PDEVICE_OBJECT FdoDevice,
+ IN PUSBPORT_DEVICE_HANDLE HubDeviceHandle,
+ OUT PUSHORT OutPort,
+ OUT PUSBPORT_DEVICE_HANDLE * OutHubDeviceHandle)
+{
+ PUSBPORT_DEVICE_HANDLE DeviceHandle = HubDeviceHandle;
+ ULONG TtCount;
+ PLIST_ENTRY Entry;
+ PUSB2_TT_EXTENSION TtExtension = NULL;
+
+ DPRINT("USBPORT_GetTt: HubDeviceHandle - %p\n", HubDeviceHandle);
+
+ *OutHubDeviceHandle = NULL;
+
+ while (DeviceHandle->DeviceSpeed != UsbHighSpeed)
+ {
+ DPRINT("USBPORT_GetTt: DeviceHandle - %p, DeviceHandle->PortNumber -
%X\n",
+ DeviceHandle,
+ DeviceHandle->PortNumber);
+
+ *OutPort = DeviceHandle->PortNumber;
+
+ DeviceHandle = DeviceHandle->HubDeviceHandle;
+
+ if (!DeviceHandle)
+ return NULL;
+ }
+
+ TtCount = DeviceHandle->TtCount;
+
+ if (!TtCount)
+ return NULL;
+
+ if (IsListEmpty(&DeviceHandle->TtList))
+ return NULL;
+
+ Entry = DeviceHandle->TtList.Flink;
+
+ if (TtCount > 1)
+ {
+ while (Entry != &DeviceHandle->TtList)
+ {
+ ASSERT(Entry != NULL);
+
+ TtExtension = CONTAINING_RECORD(Entry,
+ USB2_TT_EXTENSION,
+ Link);
+
+ if (TtExtension->TtNumber == *OutPort)
+ break;
+
+ Entry = Entry->Flink;
+
+ TtExtension = NULL;
+ }
+ }
+ else
+ {
+ TtExtension = CONTAINING_RECORD(Entry,
+ USB2_TT_EXTENSION,
+ Link);
+ }
+
+ *OutHubDeviceHandle = DeviceHandle;
+
+ return TtExtension;
+}
+
NTSTATUS
NTAPI
USBPORT_CreateDevice(IN OUT PUSB_DEVICE_HANDLE *pUsbdDeviceHandle,