ReactOS  0.4.15-dev-5487-ge7bbbf0
usbport.h
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS USB Port Driver
3  * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * PURPOSE: USBPort declarations
5  * COPYRIGHT: Copyright 2017 Vadim Galyant <vgal@rambler.ru>
6  */
7 
8 #ifndef USBPORT_H__
9 #define USBPORT_H__
10 
11 #include <ntifs.h>
12 #include <windef.h>
13 #include <stdio.h>
14 #include <wdmguid.h>
15 #include <ntstrsafe.h>
16 #include <usb.h>
17 #include <hubbusif.h>
18 #include <usbbusif.h>
19 #include <usbdlib.h>
20 #include <usbuser.h>
22 
23 #define PCI_INTERFACE_USB_ID_UHCI 0x00
24 #define PCI_INTERFACE_USB_ID_OHCI 0x10
25 #define PCI_INTERFACE_USB_ID_EHCI 0x20
26 #define PCI_INTERFACE_USB_ID_XHCI 0x30
27 
28 #ifdef USBD_TRANSFER_DIRECTION // due hubbusif.h included usbdi.h (Which overwrites...)
29 #undef USBD_TRANSFER_DIRECTION
30 #define USBD_TRANSFER_DIRECTION 0x00000001
31 #endif
32 
33 #define USBPORT_RECIPIENT_HUB BMREQUEST_TO_DEVICE
34 #define USBPORT_RECIPIENT_PORT BMREQUEST_TO_OTHER
35 
36 #define INVALIDATE_ENDPOINT_ONLY 0
37 #define INVALIDATE_ENDPOINT_WORKER_THREAD 1
38 #define INVALIDATE_ENDPOINT_WORKER_DPC 2
39 #define INVALIDATE_ENDPOINT_INT_NEXT_SOF 3
40 
41 #define USBPORT_DMA_DIRECTION_FROM_DEVICE 1
42 #define USBPORT_DMA_DIRECTION_TO_DEVICE 2
43 
44 #define USB_PORT_TAG 'pbsu'
45 #define URB_FUNCTION_MAX 0x31
46 
47 /* Hub Class Feature Selectors (Recipient - Port) */
48 #define FEATURE_PORT_CONNECTION 0
49 #define FEATURE_PORT_ENABLE 1
50 #define FEATURE_PORT_SUSPEND 2
51 #define FEATURE_PORT_OVER_CURRENT 3
52 #define FEATURE_PORT_RESET 4
53 #define FEATURE_PORT_POWER 8
54 #define FEATURE_PORT_LOW_SPEED 9
55 #define FEATURE_C_PORT_CONNECTION 16
56 #define FEATURE_C_PORT_ENABLE 17
57 #define FEATURE_C_PORT_SUSPEND 18
58 #define FEATURE_C_PORT_OVER_CURRENT 19
59 #define FEATURE_C_PORT_RESET 20
60 
61 /* Hub Class Feature Selectors (Recipient - Hub) */
62 #define FEATURE_C_HUB_LOCAL_POWER 0
63 #define FEATURE_C_HUB_OVER_CURRENT 1
64 
65 /* Flags */
66 #define USBPORT_FLAG_INT_CONNECTED 0x00000001
67 #define USBPORT_FLAG_HC_STARTED 0x00000002
68 #define USBPORT_FLAG_HC_POLLING 0x00000004
69 #define USBPORT_FLAG_WORKER_THREAD_ON 0x00000008
70 #define USBPORT_FLAG_WORKER_THREAD_EXIT 0x00000010
71 #define USBPORT_FLAG_HC_SUSPEND 0x00000100
72 #define USBPORT_FLAG_INTERRUPT_ENABLED 0x00000400
73 #define USBPORT_FLAG_SELECTIVE_SUSPEND 0x00000800
74 #define USBPORT_FLAG_DOS_SYMBOLIC_NAME 0x00010000
75 #define USBPORT_FLAG_LEGACY_SUPPORT 0x00080000
76 #define USBPORT_FLAG_HC_WAKE_SUPPORT 0x00200000
77 #define USBPORT_FLAG_DIAGNOSTIC_MODE 0x00800000 //IOCTL_USB_DIAGNOSTIC_MODE_ON
78 #define USBPORT_FLAG_COMPANION_HC 0x01000000
79 #define USBPORT_FLAG_REGISTERED_FDO 0x02000000
80 #define USBPORT_FLAG_NO_HACTION 0x04000000
81 #define USBPORT_FLAG_BIOS_DISABLE_SS 0x08000000 //Selective Suspend
82 #define USBPORT_FLAG_PWR_AND_CHIRP_LOCK 0x10000000
83 #define USBPORT_FLAG_POWER_AND_CHIRP_OK 0x40000000
84 #define USBPORT_FLAG_RH_INIT_CALLBACK 0x80000000
85 
86 /* PnP state Flags */
87 #define USBPORT_PNP_STATE_NOT_INIT 0x00000001
88 #define USBPORT_PNP_STATE_STARTED 0x00000002
89 #define USBPORT_PNP_STATE_FAILED 0x00000004
90 #define USBPORT_PNP_STATE_STOPPED 0x00000008
91 
92 /* Timer Flags */
93 #define USBPORT_TMFLAG_TIMER_QUEUED 0x00000001
94 #define USBPORT_TMFLAG_HC_SUSPENDED 0x00000002
95 #define USBPORT_TMFLAG_HC_RESUME 0x00000004
96 #define USBPORT_TMFLAG_RH_SUSPENDED 0x00000008
97 #define USBPORT_TMFLAG_TIMER_STARTED 0x00000010
98 #define USBPORT_TMFLAG_WAKE 0x00000020
99 #define USBPORT_TMFLAG_IDLE_QUEUEITEM_ON 0x00000040
100 
101 /* Miniport Flags */
102 #define USBPORT_MPFLAG_INTERRUPTS_ENABLED 0x00000001
103 #define USBPORT_MPFLAG_SUSPENDED 0x00000002
104 
105 /* Device handle Flags (USBPORT_DEVICE_HANDLE) */
106 #define DEVICE_HANDLE_FLAG_ROOTHUB 0x00000002
107 #define DEVICE_HANDLE_FLAG_REMOVED 0x00000008
108 #define DEVICE_HANDLE_FLAG_USB2HUB 0x00000010
109 
110 /* Endpoint Flags (USBPORT_ENDPOINT) */
111 #define ENDPOINT_FLAG_DMA_TYPE 0x00000001
112 #define ENDPOINT_FLAG_ROOTHUB_EP0 0x00000002
113 #define ENDPOINT_FLAG_NUKE 0x00000008
114 #define ENDPOINT_FLAG_QUEUENE_EMPTY 0x00000010
115 #define ENDPOINT_FLAG_ABORTING 0x00000020
116 #define ENDPOINT_FLAG_IDLE 0x00000100
117 #define ENDPOINT_FLAG_OPENED 0x00000200
118 #define ENDPOINT_FLAG_CLOSED 0x00000400
119 
120 /* UsbdFlags Flags (URB) */
121 #define USBD_FLAG_ALLOCATED_MDL 0x00000002
122 #define USBD_FLAG_NOT_ISO_TRANSFER 0x00000010
123 #define USBD_FLAG_ALLOCATED_TRANSFER 0x00000020
124 
125 /* Pipe handle Flags (USBPORT_PIPE_HANDLE) */
126 #define PIPE_HANDLE_FLAG_CLOSED 0x00000001
127 #define PIPE_HANDLE_FLAG_NULL_PACKET_SIZE 0x00000002
128 
129 /* Transfer Flags (USBPORT_TRANSFER) */
130 #define TRANSFER_FLAG_CANCELED 0x00000001
131 #define TRANSFER_FLAG_DMA_MAPPED 0x00000002
132 #define TRANSFER_FLAG_HIGH_SPEED 0x00000004
133 #define TRANSFER_FLAG_SUBMITED 0x00000008
134 #define TRANSFER_FLAG_ABORTED 0x00000010
135 #define TRANSFER_FLAG_ISO 0x00000020
136 #define TRANSFER_FLAG_DEVICE_GONE 0x00000080
137 #define TRANSFER_FLAG_SPLITED 0x00000100
138 #define TRANSFER_FLAG_COMPLETED 0x00000200
139 #define TRANSFER_FLAG_PARENT 0x00000400
140 
143 
145 
154 
156 
159 typedef struct _USB2_TT *PUSB2_TT;
161 
162 typedef struct _USBPORT_PIPE_HANDLE {
170 
174  //USB_CONFIGURATION_DESCRIPTOR CfgDescriptor; // Body.
176 
185 
186 typedef struct _USBPORT_DEVICE_HANDLE {
200  PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
203 
204 typedef struct _USBPORT_ENDPOINT {
209  PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
214  /* Locks */
221  /* State */
226  /* Transfer lists */
231  /* Links */
242 
243 typedef struct _USBPORT_ISO_BLOCK *PUSBPORT_ISO_BLOCK;
244 
245 typedef struct _USBPORT_TRANSFER {
251  SIZE_T PortTransferLength; // Only port part
252  SIZE_T FullTransferLength; // Port + miniport
266  LIST_ENTRY SplitTransfersList; // for parent transfers
267  LIST_ENTRY SplitLink; // for splitted transfers
269  PUSBPORT_ISO_BLOCK IsoBlockPtr; // pointer on IsoBlock
270  // SgList should be LAST field
272  //USBPORT_ISO_BLOCK IsoBlock; // variable length
274 
275 typedef struct _USBPORT_IRP_TABLE {
277  PIRP irp[0X200];
279 
282  PDEVICE_OBJECT LowerPdoDevice; // PhysicalDeviceObject
283  PDEVICE_OBJECT LowerDevice; // TopOfStackDeviceObject
290 
294  PDEVICE_OBJECT RootHubPdo; // RootHubDeviceObject
304  /* Miniport */
311  /* Bus Interface */
319  /* Dma Adapter */
322  /* Interrupt */
330  /* Endpoints */
339  /* Transfers */
347  /* Timer */
348  ULONG TimerValue; // Timer period (500) msec. default
353  /* Worker Thread */
358  /* Usb Devices */
363  /* Device Capabilities */
369  /* Idle */
375  /* Bad Requests */
380  /* Irp Queues */
383  /* Power */
389  /* Usb 2.0 HC Extension */
393 
394  /* Miniport extension should be aligned on 0x100 */
395 #if !defined(_M_X64)
397 #else
398  ULONG Padded[30];
399 #endif
400 
402 
403 #if !defined(_M_X64)
404 C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x500);
405 #else
406 C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x700);
407 #endif
408 
409 typedef struct _USBPORT_RH_DESCRIPTORS {
414  USB_HUB_DESCRIPTOR Descriptor; // Size may be: 7 + 2[1..32] (7 + 2..64)
416 
431 
437  ASYNC_TIMER_CALLBACK *CallbackFunction;
440 
441 C_ASSERT(sizeof(USBPORT_ASYNC_CALLBACK_DATA) == 16 + 18 * sizeof(PVOID));
442 
443 typedef struct _TIMER_WORK_QUEUE_ITEM {
448 
449 /* Transaction Translator */
450 /* See Chapter 5 - USB Data Flow Model and Chapter 11 - Hub Specification */
451 
452 #define USB2_FRAMES 32
453 #define USB2_MICROFRAMES 8
454 #define USB2_MAX_MICROFRAMES (USB2_FRAMES * USB2_MICROFRAMES)
455 #define USB2_PREV_MICROFRAME 0xFF
456 
457 #define USB2_MAX_MICROFRAME_ALLOCATION 7000 // bytes
458 #define USB2_CONTROLLER_DELAY 100
459 #define USB2_FS_MAX_PERIODIC_ALLOCATION 1157 // ((12000 / 8 bits) * 0.9) / (7/6) - 90% max, and bits stuffing
460 #define USB2_FS_SOF_TIME 6
461 #define USB2_HUB_DELAY 30
462 #define USB2_MAX_FS_LS_TRANSACTIONS_IN_UFRAME 16
463 #define USB2_FS_RAW_BYTES_IN_MICROFRAME 188 // (12000 / 8 bits / USB2_MICROFRAMES) = 187,5. But we use "best case budget"
464 
465 /* Overheads */
466 #define USB2_LS_INTERRUPT_OVERHEAD 117 // FS-bytes
467 #define USB2_FS_INTERRUPT_OVERHEAD 13
468 #define USB2_HS_INTERRUPT_OUT_OVERHEAD 45
469 #define USB2_HS_INTERRUPT_IN_OVERHEAD 25
470 #define USB2_FS_ISOCHRONOUS_OVERHEAD 9
471 #define USB2_HS_ISOCHRONOUS_OUT_OVERHEAD 38
472 #define USB2_HS_ISOCHRONOUS_IN_OVERHEAD 18
473 
474 #define USB2_HS_SS_INTERRUPT_OUT_OVERHEAD 58
475 #define USB2_HS_CS_INTERRUPT_OUT_OVERHEAD 36
476 #define USB2_HS_SS_INTERRUPT_IN_OVERHEAD 39
477 #define USB2_HS_CS_INTERRUPT_IN_OVERHEAD 38
478 
479 #define USB2_HS_SS_ISOCHRONOUS_OUT_OVERHEAD 58
480 #define USB2_HS_SS_ISOCHRONOUS_IN_OVERHEAD 39
481 #define USB2_HS_CS_ISOCHRONOUS_IN_OVERHEAD 38
482 
483 #define USB2_BIT_STUFFING_OVERHEAD (8 * (7/6)) // 7.1.9 Bit Stuffing
484 
486  struct {
492  };
495 
496 C_ASSERT(sizeof(USB2_TT_ENDPOINT_PARAMS) == sizeof(ULONG));
497 
498 typedef union _USB2_TT_ENDPOINT_NUMS {
499  struct {
503  };
506 
507 C_ASSERT(sizeof(USB2_TT_ENDPOINT_NUMS) == sizeof(ULONG));
508 
509 typedef struct _USB2_TT_ENDPOINT {
526 
527 typedef struct _USB2_FRAME_BUDGET {
534 
535 typedef struct _USB2_TT {
544 } USB2_TT, *PUSB2_TT;
545 
546 #define USB2_TT_EXTENSION_FLAG_DELETED 1
547 
548 typedef struct _USB2_TT_EXTENSION {
561 
562 typedef struct _USB2_HC_EXTENSION {
568 
569 typedef struct _USB2_REBALANCE {
572 
573 /* usbport.c */
574 NTSTATUS
575 NTAPI
577  IN PURB Urb,
578  IN USBD_STATUS USBDStatus);
579 
580 NTSTATUS
581 NTAPI
583  IN PVOID MiniPortExtension,
584  IN ULONG Milliseconds);
585 
586 VOID
587 NTAPI
589  IN PRKDPC Dpc,
593 
594 NTSTATUS
595 NTAPI
597  IN PDEVICE_OBJECT FdoDevice);
598 
599 VOID
600 NTAPI
602  IN PDEVICE_OBJECT FdoDevice);
603 
604 BOOLEAN
605 NTAPI
607  IN PDEVICE_OBJECT FdoDevice,
608  IN ULONG Time);
609 
611 NTAPI
613  IN PDEVICE_OBJECT FdoDevice,
615 
616 VOID
617 NTAPI
619  IN PDEVICE_OBJECT FdoDevice,
620  IN PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer);
621 
623 NTAPI
625  IN PDEVICE_OBJECT FdoDevice,
626  IN PURB Urb,
628  IN PIRP Irp,
629  IN PRKEVENT Event);
630 
631 VOID
632 NTAPI
634  IN PDEVICE_OBJECT FdoDevice);
635 
636 VOID
637 NTAPI
639  IN PRKDPC Dpc,
643 
644 BOOLEAN
645 NTAPI
649 
650 VOID
651 NTAPI
653  IN PDEVICE_OBJECT FdoDevice);
654 
655 VOID
656 NTAPI
658  IN PURB Urb,
659  IN USBD_STATUS TransferStatus);
660 
661 VOID
662 NTAPI
664  IN PDEVICE_OBJECT FdoDevice);
665 
666 VOID
667 NTAPI
669  IN PRKDPC Dpc,
673 
674 BOOLEAN
675 NTAPI
677  IN PUSBPORT_TRANSFER Transfer,
678  IN USBD_STATUS USBDStatus);
679 
680 VOID
681 NTAPI
683  IN PDEVICE_OBJECT FdoDevice,
684  IN BOOLEAN IsEnable);
685 
686 NTSTATUS
687 NTAPI
690  IN BOOL UseDriverKey,
691  IN ULONG Type,
692  IN PCWSTR ValueNameString,
693  IN PVOID Data,
694  IN ULONG DataSize);
695 
696 NTSTATUS
697 NTAPI
699  IN PDEVICE_OBJECT FdoDevice,
700  IN PDEVICE_OBJECT PdoDevice,
701  IN BOOL UseDriverKey,
703  IN ULONG LengthStr,
704  IN PVOID Buffer,
706 
707 VOID
708 NTAPI
710  IN PDEVICE_OBJECT FdoDevice);
711 
712 VOID
713 NTAPI
715  IN PDEVICE_OBJECT FdoDevice);
716 
717 VOID
718 NTAPI
720  IN PDEVICE_OBJECT FdoDevice);
721 
723 NTAPI
725  IN PDEVICE_OBJECT FdoDevice);
726 
728 NTAPI
730  IN PDEVICE_OBJECT USB2FdoDevice,
731  IN BOOLEAN IsObRefer,
732  IN BOOLEAN IsFDOsReturned);
733 
734 VOID
735 NTAPI
737  IN PDEVICE_OBJECT FdoDevice,
738  IN ULONG Type);
739 
740 VOID
741 NTAPI
743  IN PUSBPORT_TRANSFER Transfer);
744 
745 /* debug.c */
746 ULONG
748  IN PVOID MiniPortExtension,
749  IN ULONG Level,
750  IN PCH Format,
751  ...);
752 
753 ULONG
754 NTAPI
756  IN PVOID MiniPortExtension);
757 
758 ULONG
759 NTAPI
761  PVOID MiniPortExtension,
762  PVOID FailedAssertion,
763  PVOID FileName,
765  PCHAR Message);
766 
767 VOID
768 NTAPI
770  IN PVOID MiniPortExtension);
771 
772 ULONG
773 NTAPI
775  IN PVOID MiniPortExtension,
776  IN ULONG DriverTag,
777  IN ULONG EnumTag,
778  IN ULONG P1,
779  IN ULONG P2,
780  IN ULONG P3);
781 
782 VOID
783 NTAPI
786 
787 VOID
788 NTAPI
791 
792 VOID
793 NTAPI
796 
797 VOID
798 NTAPI
801 
802 VOID
803 NTAPI
805  IN PURB Urb);
806 
807 VOID
808 NTAPI
810  IN PVOID Buffer);
811 
812 /* device.c */
813 NTSTATUS
814 NTAPI
816  IN PDEVICE_OBJECT FdoDevice,
817  IN PIRP Irp,
818  IN PURB Urb);
819 
820 VOID
821 NTAPI
823  IN PDEVICE_OBJECT FdoDevice,
825 
826 VOID
827 NTAPI
829  IN PDEVICE_OBJECT FdoDevice,
831 
832 BOOLEAN
833 NTAPI
835  IN PDEVICE_OBJECT FdoDevice,
837 
838 NTSTATUS
839 NTAPI
841  IN OUT PUSB_DEVICE_HANDLE *pUsbdDeviceHandle,
842  IN PDEVICE_OBJECT FdoDevice,
845  IN USHORT Port);
846 
847 NTSTATUS
848 NTAPI
851  IN PDEVICE_OBJECT FdoDevice);
852 
853 NTSTATUS
854 NTAPI
857  IN PDEVICE_OBJECT FdoDevice,
858  IN UCHAR Type,
859  IN PUCHAR ConfigDesc,
860  IN PULONG ConfigDescSize);
861 
862 NTSTATUS
863 NTAPI
865  IN PDEVICE_OBJECT FdoDevice,
866  IN PIRP Irp,
867  IN PURB Urb);
868 
869 NTSTATUS
870 NTAPI
872  IN PDEVICE_OBJECT FdoDevice,
874  IN ULONG Flags);
875 
876 NTSTATUS
877 NTAPI
880  IN PDEVICE_OBJECT FdoDevice,
882  IN PVOID Buffer,
883  IN ULONG Length,
884  IN OUT PULONG TransferedLen,
885  IN OUT PUSBD_STATUS pUSBDStatus);
886 
887 NTSTATUS
888 NTAPI
890  IN PDEVICE_OBJECT FdoDevice,
893 
894 NTSTATUS
895 NTAPI
897  IN PDEVICE_OBJECT FdoDevice,
899  IN ULONG TtCount);
900 
901 /* endpoint.c */
902 NTSTATUS
903 NTAPI
905  IN PDEVICE_OBJECT FdoDevice,
909 
910 MPSTATUS
911 NTAPI
913  IN PDEVICE_OBJECT FdoDevice,
914  IN PUSBPORT_ENDPOINT Endpoint);
915 
916 NTSTATUS
917 NTAPI
919  IN PDEVICE_OBJECT FdoDevice,
920  IN PUSBPORT_ENDPOINT Endpoint);
921 
922 VOID
923 NTAPI
926  IN PDEVICE_OBJECT FdoDevice,
928 
929 VOID
930 NTAPI
932  IN PDEVICE_OBJECT FdoDevice,
933  IN PUSBPORT_ENDPOINT Endpoint);
934 
935 VOID
936 NTAPI
940 
941 VOID
942 NTAPI
946 
947 BOOLEAN
948 NTAPI
952 
953 VOID
954 NTAPI
956  IN PDEVICE_OBJECT FdoDevice);
957 
958 VOID
959 NTAPI
961  IN PUSBPORT_ENDPOINT Endpoint,
962  IN ULONG State);
963 
964 ULONG
965 NTAPI
967  IN PUSBPORT_ENDPOINT Endpoint);
968 
969 VOID
970 NTAPI
972  IN PDEVICE_OBJECT FdoDevice,
973  IN PUSBPORT_ENDPOINT Endpoint,
974  IN ULONG Type);
975 
976 BOOLEAN
977 NTAPI
979  IN PUSBPORT_ENDPOINT Endpoint,
980  IN BOOLEAN Flag);
981 
982 VOID
983 NTAPI
985  IN PDEVICE_OBJECT FdoDevice);
986 
987 BOOLEAN
988 NTAPI
990  IN PDEVICE_OBJECT FdoDevice,
991  IN PUSBPORT_ENDPOINT Endpoint,
992  IN PULONG TransferCount);
993 
994 /* iface.c */
995 NTSTATUS
996 NTAPI
998  IN PDEVICE_OBJECT FdoDevice,
999  IN PDEVICE_OBJECT PdoDevice,
1000  IN PIRP Irp);
1001 
1002 /* ioctl.c */
1003 NTSTATUS
1004 NTAPI
1006  PDEVICE_OBJECT PdoDevice,
1007  PIRP Irp);
1008 
1009 NTSTATUS
1010 NTAPI
1012  PDEVICE_OBJECT FdoDevice,
1013  PIRP Irp);
1014 
1015 NTSTATUS
1016 NTAPI
1018  IN PDEVICE_OBJECT FdoDevice,
1019  IN PIRP Irp);
1020 
1021 NTSTATUS
1022 NTAPI
1024  IN PDEVICE_OBJECT FdoDevice,
1025  IN PIRP Irp);
1026 
1027 NTSTATUS
1028 NTAPI
1030  IN PDEVICE_OBJECT RootHubPdo,
1032 
1033 /* iso.c */
1035 NTAPI
1037  IN PDEVICE_OBJECT FdoDevice,
1038  IN struct _URB_ISOCH_TRANSFER * Urb,
1039  IN PUSBPORT_TRANSFER Transfer);
1040 
1041 ULONG
1042 NTAPI
1044  IN PVOID MiniPortExtension,
1045  IN PVOID MiniPortEndpoint,
1046  IN PVOID TransferParameters,
1047  IN ULONG TransferLength);
1048 
1049 /* pnp.c */
1050 NTSTATUS
1051 NTAPI
1053  IN PDEVICE_OBJECT FdoDevice,
1054  IN PIRP Irp);
1055 
1056 NTSTATUS
1057 NTAPI
1059  IN PDEVICE_OBJECT FdoDevice,
1060  IN PIRP Irp);
1061 
1062 /* power.c */
1063 NTSTATUS
1064 NTAPI
1066  IN PDEVICE_OBJECT PdoDevice,
1067  IN PIRP Irp);
1068 
1069 NTSTATUS
1070 NTAPI
1072  IN PDEVICE_OBJECT FdoDevice,
1073  IN PIRP Irp);
1074 
1075 NTSTATUS
1076 NTAPI
1078  IN PDEVICE_OBJECT PdoDevice,
1079  IN PIRP Irp);
1080 
1081 VOID
1082 NTAPI
1084  IN PDEVICE_OBJECT FdoDevice,
1085  IN PDEVICE_OBJECT PdoDevice);
1086 
1087 VOID
1088 NTAPI
1090  IN PVOID Context);
1091 
1092 VOID
1093 NTAPI
1095  IN PDEVICE_OBJECT FdoDevice);
1096 
1097 VOID
1098 NTAPI
1100  IN PDEVICE_OBJECT FdoDevice);
1101 
1102 VOID
1103 NTAPI
1105  IN PRKDPC Dpc,
1109 
1110 VOID
1111 NTAPI
1113  IN PDEVICE_OBJECT FdoDevice);
1114 
1115 /* queue.c */
1116 VOID
1117 NTAPI
1119  IN PIO_CSQ Csq,
1120  IN PIRP Irp);
1121 
1122 VOID
1123 NTAPI
1125  IN PIO_CSQ Csq,
1126  IN PIRP Irp);
1127 
1128 PIRP
1129 NTAPI
1131  IN PIO_CSQ Csq,
1132  IN PIRP Irp,
1133  IN PVOID PeekContext);
1134 
1135 VOID
1136 NTAPI
1138  IN PIO_CSQ Csq,
1139  IN PKIRQL Irql);
1140 
1141 VOID
1142 NTAPI
1144  IN PIO_CSQ Csq,
1145  IN KIRQL Irql);
1146 
1147 VOID
1148 NTAPI
1150  IN PIO_CSQ Csq,
1151  IN PIRP Irp);
1152 
1153 VOID
1154 NTAPI
1156  IN PIO_CSQ Csq,
1157  IN PIRP Irp);
1158 
1159 VOID
1160 NTAPI
1162  IN PIO_CSQ Csq,
1163  IN PIRP Irp);
1164 
1165 PIRP
1166 NTAPI
1168  IN PIO_CSQ Csq,
1169  IN PIRP Irp,
1170  IN PVOID PeekContext);
1171 
1172 VOID
1173 NTAPI
1175  IN PIO_CSQ Csq,
1176  IN PKIRQL Irql);
1177 
1178 VOID
1179 NTAPI
1181  IN PIO_CSQ Csq,
1182  IN KIRQL Irql);
1183 
1184 VOID
1185 NTAPI
1187  IN PIO_CSQ Csq,
1188  IN PIRP Irp);
1189 
1190 VOID
1191 NTAPI
1193  IN PUSBPORT_IRP_TABLE IrpTable,
1194  IN PIRP Irp);
1195 
1196 PIRP
1197 NTAPI
1199  IN PDEVICE_OBJECT FdoDevice,
1200  IN PIRP Irp);
1201 
1202 PIRP
1203 NTAPI
1205  IN PDEVICE_OBJECT FdoDevice,
1206  IN PIRP Irp);
1207 
1208 VOID
1209 NTAPI
1211  IN PUSBPORT_IRP_TABLE IrpTable,
1212  IN PURB Urb,
1213  IN PIRP Irp);
1214 
1215 VOID
1216 NTAPI
1219  IN PIRP Irp);
1220 
1221 VOID
1222 NTAPI
1224  IN PUSBPORT_ENDPOINT Endpoint);
1225 
1226 VOID
1227 NTAPI
1229  IN PUSBPORT_ENDPOINT Endpoint);
1230 
1231 VOID
1232 NTAPI
1234  IN PURB Urb);
1235 
1236 VOID
1237 NTAPI
1239  IN PDEVICE_OBJECT FdoDevice);
1240 
1241 VOID
1242 NTAPI
1244  IN PUSBPORT_ENDPOINT Endpoint);
1245 
1246 BOOLEAN
1247 NTAPI
1249  IN PUSBPORT_ENDPOINT Endpoint,
1250  IN PURB Urb);
1251 
1252 VOID
1253 NTAPI
1255  IN PDEVICE_OBJECT FdoDevice);
1256 
1257 VOID
1258 NTAPI
1260  IN PDEVICE_OBJECT FdoDevice);
1261 
1262 VOID
1263 NTAPI
1265  IN PDEVICE_OBJECT FdoDevice,
1266  IN PUSBPORT_ENDPOINT Endpoint,
1267  IN PIRP Irp);
1268 
1269 /* roothub.c */
1270 VOID
1271 NTAPI
1273  PUSBPORT_ENDPOINT Endpoint);
1274 
1275 NTSTATUS
1276 NTAPI
1278  IN PDEVICE_OBJECT FdoDevice,
1279  IN PDEVICE_OBJECT PdoDevice);
1280 
1281 ULONG
1282 NTAPI
1284  PVOID MiniPortExtension);
1285 
1286 VOID
1287 NTAPI
1289  IN PDEVICE_OBJECT FdoDevice);
1290 
1291 /* trfsplit.c */
1292 VOID
1293 NTAPI
1295  IN PDEVICE_OBJECT FdoDevice,
1296  IN PUSBPORT_ENDPOINT Endpoint,
1297  IN PUSBPORT_TRANSFER Transfer,
1298  IN PLIST_ENTRY List);
1299 
1300 VOID
1301 NTAPI
1303  IN PUSBPORT_TRANSFER SplitTransfer);
1304 
1305 VOID
1306 NTAPI
1308  IN PUSBPORT_TRANSFER SplitTransfer);
1309 
1310 /* urb.c */
1311 NTSTATUS
1312 NTAPI
1314  IN PDEVICE_OBJECT PdoDevice,
1315  IN PIRP Irp,
1316  IN PURB Urb);
1317 
1318 /* usb2.c */
1319 BOOLEAN
1320 NTAPI
1322  IN PDEVICE_OBJECT FdoDevice,
1323  IN PUSBPORT_ENDPOINT Endpoint);
1324 
1325 VOID
1326 NTAPI
1328  IN PDEVICE_OBJECT FdoDevice,
1329  IN PUSBPORT_ENDPOINT Endpoint);
1330 
1331 VOID
1332 NTAPI
1334  IN PUSB2_TT_EXTENSION TtExtension);
1335 
1336 VOID
1337 NTAPI
1338 USB2_InitTT(
1339  IN PUSB2_HC_EXTENSION HcExtension,
1340  IN PUSB2_TT Tt);
1341 
1342 VOID
1343 NTAPI
1345  IN PUSB2_HC_EXTENSION HcExtension);
1346 
1347 VOID
1348 NTAPI
1350  IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties);
1351 
1352 VOID
1353 NTAPI
1355  IN PUSB2_TT_ENDPOINT TtEndpoint);
1356 
1357 #endif /* USBPORT_H__ */
ULONG NumberOfMapRegisters
Definition: usbport.h:260
ULONG MPSTATUS
Definition: usbmport.h:131
#define USB2_MICROFRAMES
Definition: usbport.h:453
USB2_FRAME_BUDGET FrameBudget[USB2_FRAMES]
Definition: usbport.h:541
KSPIN_LOCK SetPowerD0SpinLock
Definition: usbport.h:386
signed char * PCHAR
Definition: retypes.h:7
LIST_ENTRY SplitLink
Definition: usbport.h:267
MPSTATUS NTAPI MiniportOpenEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:722
BOOLEAN NTAPI USBPORT_EndpointWorker(IN PUSBPORT_ENDPOINT Endpoint, IN BOOLEAN Flag)
Definition: endpoint.c:1656
USBPORT_SCATTER_GATHER_LIST SgList
Definition: usbport.h:271
VOID NTAPI USBPORT_SetEndpointState(IN PUSBPORT_ENDPOINT Endpoint, IN ULONG State)
Definition: endpoint.c:363
struct _USB2_REBALANCE USB2_REBALANCE
BOOLEAN NTAPI USBPORT_InterruptService(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext)
Definition: usbport.c:1077
CPPORT Port[4]
Definition: headless.c:35
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define IN
Definition: typedefs.h:39
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3767
NTSTATUS NTAPI USBPORT_OpenPipe(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle, IN PUSBD_STATUS UsbdStatus)
PUSB2_TT_ENDPOINT TtEndpoint
Definition: usbport.h:210
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:445
VOID NTAPI USBPORT_HcQueueWakeDpc(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:63
LIST_ENTRY EndpointLink
Definition: usbport.h:232
BOOLEAN NTAPI USBPORT_AllocateBandwidthUSB2(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: usb2.c:1799
struct _USBPORT_TRANSFER USBPORT_TRANSFER
NTSTATUS NTAPI USBPORT_CreateWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1427
BOOLEAN NTAPI USBPORT_QueueDoneTransfer(IN PUSBPORT_TRANSFER Transfer, IN USBD_STATUS USBDStatus)
Definition: usbport.c:839
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
Definition: hubbusif.h:121
LIST_ENTRY WorkerLink
Definition: usbport.h:233
NTSTATUS NTAPI USBPORT_RemoveDevice(IN PDEVICE_OBJECT FdoDevice, IN OUT PUSBPORT_DEVICE_HANDLE DeviceHandle, IN ULONG Flags)
Definition: device.c:1584
struct _USBPORT_ASYNC_CALLBACK_DATA * PUSBPORT_ASYNC_CALLBACK_DATA
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:107
USBD_STATUS NTAPI USBPORT_AllocateTransfer(IN PDEVICE_OBJECT FdoDevice, IN PURB Urb, IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PIRP Irp, IN PRKEVENT Event)
Definition: usbport.c:2543
NTSTATUS NTAPI USBPORT_SendSetupPacket(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice, IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket, IN PVOID Buffer, IN ULONG Length, IN OUT PULONG TransferedLen, IN OUT PUSBD_STATUS pUSBDStatus)
Definition: device.c:15
KSPIN_LOCK DeviceHandleSpinLock
Definition: usbport.h:361
LIST_ENTRY FlushLink
Definition: usbport.h:236
struct _TIMER_WORK_QUEUE_ITEM * PTIMER_WORK_QUEUE_ITEM
NTSTATUS NTAPI USBPORT_FdoDeviceControl(PDEVICE_OBJECT FdoDevice, PIRP Irp)
VOID NTAPI USBPORT_BadRequestFlush(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1328
ULONG MinBandwidth
Definition: usbport.h:554
ULONG USBPORT_DbgPrint(IN PVOID MiniPortExtension, IN ULONG Level, IN PCH Format,...)
Definition: debug.c:19
LIST_ENTRY ControllerLink
Definition: usbport.h:302
VOID NTAPI USBPORT_RemovePipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:456
LARGE_INTEGER Time
Definition: usbport.h:263
VOID NTAPI USBPORT_FlushAllEndpoints(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1171
USB_CONFIGURATION_DESCRIPTOR ConfigDescriptor
Definition: usbport.h:411
LIST_ENTRY FlushAbortLink
Definition: usbport.h:238
LIST_ENTRY MapTransferList
Definition: usbport.h:340
VOID NTAPI USBPORT_DumpingDeviceDescriptor(IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor)
Definition: debug.c:79
ULONG TimeUsed[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:565
VOID NTAPI USBPORT_DoneSplitTransfer(IN PUSBPORT_TRANSFER SplitTransfer)
Definition: trfsplit.c:278
KSPIN_LOCK BadRequestIoCsqSpinLock
Definition: usbport.h:377
PUSBPORT_COMMON_BUFFER_HEADER NTAPI USBPORT_AllocateCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN SIZE_T BufferLength)
Definition: usbport.c:1708
USHORT StartTime
Definition: usbport.h:521
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET SetupPacket
Definition: wdfusb.h:1331
PDEVICE_OBJECT LowerPdoDevice
Definition: usbport.h:282
struct _USB2_TT_EXTENSION * PUSB2_TT_EXTENSION
Definition: usbport.h:158
NTSTATUS NTAPI USBPORT_Initialize20Hub(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE HubDeviceHandle, IN ULONG TtCount)
Definition: device.c:2012
VOID NTAPI USBPORT_AdjustDeviceCapabilities(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice)
Definition: power.c:668
NTSTATUS NTAPI USBPORT_Wait(IN PVOID MiniPortExtension, IN ULONG Milliseconds)
Definition: usbport.c:543
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:372
PUSB2_HC_EXTENSION HcExtension
Definition: usbport.h:536
unsigned char * PUCHAR
Definition: retypes.h:3
NTSTATUS NTAPI USBPORT_HandleSelectConfiguration(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: device.c:574
USBPORT_TRANSFER_PARAMETERS TransferParameters
Definition: usbport.h:254
LONG NTSTATUS
Definition: precomp.h:26
VOID NTAPI USBPORT_InvalidateEndpointHandler(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN ULONG Type)
Definition: endpoint.c:1317
struct _USBPORT_DEVICE_HANDLE * HubDeviceHandle
Definition: usbport.h:195
VOID NTAPI USBPORT_AbortEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PIRP Irp)
Definition: queue.c:1354
UNICODE_STRING DosDeviceSymbolicName
Definition: usbport.h:300
LIST_ENTRY Link
Definition: usbport.h:558
struct _USBPORT_COMMON_DEVICE_EXTENSION * PUSBPORT_COMMON_DEVICE_EXTENSION
PDMA_ADAPTER DmaAdapter
Definition: usbport.h:320
NTSTATUS NTAPI USBPORT_PdoPnP(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: pnp.c:1517
VOID NTAPI USBPORT_AcquireIdleLock(IN PIO_CSQ Csq, IN PKIRQL Irql)
Definition: queue.c:91
_In_ NTSTATUS _In_ USBD_STATUS UsbdStatus
Definition: wdfusb.h:400
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE HubDeviceHandle
Definition: hubbusif.h:40
struct _USBPORT_COMMON_BUFFER_HEADER USBPORT_COMMON_BUFFER_HEADER
LIST_ENTRY IdleIrpList
Definition: usbport.h:373
VOID NTAPI USBPORT_CompleteCanceledIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:123
struct _USBPORT_COMMON_BUFFER_HEADER * PUSBPORT_COMMON_BUFFER_HEADER
LIST_ENTRY DoneTransferList
Definition: usbport.h:342
DEVICE_CAPABILITIES Capabilities
Definition: usbport.h:428
ULONG MaxBandwidth
Definition: usbport.h:553
LIST_ENTRY DeviceHandleLink
Definition: usbport.h:197
PMDL TransferBufferMDL
Definition: usbport.h:255
NTSTATUS NTAPI USBPORT_SetRegistryKeyValue(IN PDEVICE_OBJECT DeviceObject, IN BOOL UseDriverKey, IN ULONG Type, IN PCWSTR ValueNameString, IN PVOID Data, IN ULONG DataSize)
Definition: usbport.c:248
DEVICE_CAPABILITIES
Definition: iotypes.h:965
VOID NTAPI USBPORT_DumpingURB(IN PURB Urb)
Definition: debug.c:224
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:434
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
VOID NTAPI USBPORT_CancelActiveTransferIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: queue.c:529
VOID NTAPI USBPORT_RemoveUSBxFdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:98
BOOLEAN NTAPI USBPORT_ValidateDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:801
VOID NTAPI USBPORT_TransferFlushDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:825
NTSTATUS NTAPI USBPORT_CreateDevice(IN OUT PUSB_DEVICE_HANDLE *pUsbdDeviceHandle, IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE HubDeviceHandle, IN USHORT PortStatus, IN USHORT Port)
Definition: device.c:982
LARGE_INTEGER IdleTime
Definition: usbport.h:370
LIST_ENTRY AbortList
Definition: usbport.h:230
VOID NTAPI USBPORT_FreeBandwidthUSB2(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: usb2.c:2040
VOID NTAPI USBPORT_SignalWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1111
struct _USB2_TT * PUSB2_TT
Definition: usbport.h:159
VOID NTAPI USBPORT_ReleaseBadRequestLock(IN PIO_CSQ Csq, IN KIRQL Irql)
Definition: queue.c:230
NTSTATUS NTAPI USBPORT_FdoPower(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: power.c:489
VOID NTAPI USBPORT_FreeCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer)
Definition: usbport.c:1770
PRH_INIT_CALLBACK RootHubInitCallback
Definition: usbport.h:426
ULONG NTAPI USBPORT_GetEndpointState(IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:332
PRKEVENT Event
Definition: usbport.h:249
LIST_ENTRY DeviceHandleList
Definition: usbport.h:360
ULONG NumStartSplits[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:542
_Out_ PKIRQL Irql
Definition: csq.h:179
USBPORT_COMMON_DEVICE_EXTENSION CommonExtension
Definition: usbport.h:292
VOID NTAPI USB2_InitController(IN PUSB2_HC_EXTENSION HcExtension)
Definition: usb2.c:2217
struct _USB2_HC_EXTENSION USB2_HC_EXTENSION
KSPIN_LOCK StateChangeSpinLock
Definition: usbport.h:225
NTSTATUS NTAPI USBPORT_HandleSubmitURB(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: urb.c:791
VOID NTAPI USBPORT_DoIdleNotificationCallback(IN PVOID Context)
Definition: power.c:545
PUSB2_TT_EXTENSION TtExtension
Definition: usbport.h:209
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
Definition: usbport.h:172
LIST_ENTRY DispatchLink
Definition: usbport.h:235
VOID NTAPI USBPORT_DoneTransfer(IN PUSBPORT_TRANSFER Transfer)
Definition: usbport.c:724
uint32_t ULONG_PTR
Definition: typedefs.h:65
VOID NTAPI USBPORT_DoSetPowerD0(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:104
KSPIN_LOCK FlushPendingTransferSpinLock
Definition: usbport.h:346
C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION)==0x500)
USHORT Reserved2
Definition: usbport.h:532
KSEMAPHORE ControllerSemaphore
Definition: usbport.h:298
struct _USB2_TT_ENDPOINT USB2_TT_ENDPOINT
struct _USBPORT_ISO_BLOCK * PUSBPORT_ISO_BLOCK
Definition: usbport.h:243
struct _USBPORT_RHDEVICE_EXTENSION * PUSBPORT_RHDEVICE_EXTENSION
UCHAR KIRQL
Definition: env_spec_w32.h:591
USBD_STATUS * PUSBD_STATUS
Definition: usbport.h:144
LIST_ENTRY EndpointList
Definition: usbport.h:557
USHORT ActualPeriod
Definition: usbport.h:519
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
VOID NTAPI USBPORT_InsertIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:20
_Inout_ PUSB_DEVICE_HANDLE OldDeviceHandle
Definition: hubbusif.h:161
UCHAR StartFrame
Definition: usbport.h:523
struct _USBPORT_TRANSFER * ParentTransfer
Definition: usbport.h:264
KSPIN_LOCK MiniportSpinLock
Definition: usbport.h:310
KSPIN_LOCK EpStateChangeSpinLock
Definition: usbport.h:335
VOID NTAPI USBPORT_RemoveDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:784
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
LIST_ENTRY BadRequestList
Definition: usbport.h:378
VOID NTAPI USBPORT_SplitTransfer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PUSBPORT_TRANSFER Transfer, IN PLIST_ENTRY List)
Definition: trfsplit.c:232
WORK_QUEUE_ITEM WqItem
Definition: usbport.h:444
PUSBPORT_IRP_TABLE PendingIrpTable
Definition: usbport.h:381
USB2_TT_ENDPOINT_PARAMS TtEndpointParams
Definition: usbport.h:513
_In_ PIRP Irp
Definition: csq.h:116
VOID NTAPI USBPORT_BugCheck(IN PVOID MiniPortExtension)
Definition: debug.c:51
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:206
unsigned int BOOL
Definition: ntddk_ex.h:94
LIST_ENTRY PendingTransferList
Definition: usbport.h:227
PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer
Definition: usbport.h:207
long LONG
Definition: pedump.c:60
VOID NTAPI MiniportCloseEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:549
VOID NTAPI USBPORT_InsertIrpInTable(IN PUSBPORT_IRP_TABLE IrpTable, IN PIRP Irp)
Definition: queue.c:266
USB2_TT_ENDPOINT IsoEndpoint[USB2_FRAMES]
Definition: usbport.h:540
LIST_ENTRY TransferList
Definition: usbport.h:228
KIRQL EndpointOldIrql
Definition: usbport.h:216
USHORT MaxPacketSize
Definition: usbport.h:516
struct _USBPORT_IRP_TABLE * PUSBPORT_IRP_TABLE
struct _USBPORT_DEVICE_EXTENSION USBPORT_DEVICE_EXTENSION
VOID NTAPI USBPORT_ReleaseIdleLock(IN PIO_CSQ Csq, IN KIRQL Irql)
Definition: queue.c:107
VOID NTAPI USBPORT_DumpingTtEndpoint(IN PUSB2_TT_ENDPOINT TtEndpoint)
Definition: debug.c:300
NTSTATUS NTAPI USBPORT_RestoreDevice(IN PDEVICE_OBJECT FdoDevice, IN OUT PUSBPORT_DEVICE_HANDLE OldDeviceHandle, IN OUT PUSBPORT_DEVICE_HANDLE NewDeviceHandle)
Definition: device.c:1701
NTSTATUS NTAPI USBPORT_HandleSelectInterface(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: device.c:1486
LIST_ENTRY InterfaceLink
Definition: usbport.h:178
CHAR * PCH
Definition: ntbasedef.h:391
DEVICE_CAPABILITIES Capabilities
Definition: usbport.h:364
PUSBPORT_IRP_TABLE ActiveIrpTable
Definition: usbport.h:382
ULONG NTAPI USBPORT_AssertFailure(PVOID MiniPortExtension, PVOID FailedAssertion, PVOID FileName, ULONG LineNumber, PCHAR Message)
Definition: debug.c:38
PUSB2_HC_EXTENSION Usb2Extension
Definition: usbport.h:390
unsigned char BOOLEAN
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1909
PUSBPORT_MINIPORT_INTERFACE MiniPortInterface
Definition: usbport.h:307
_Must_inspect_result_ _In_ WDFUSBDEVICE _Out_writes_bytes_to_opt_ ConfigDescriptorLength PVOID ConfigDescriptor
Definition: wdfusb.h:1036
union _USB2_TT_ENDPOINT_NUMS USB2_TT_ENDPOINT_NUMS
USBD_STATUS NTAPI USBPORT_InitializeIsoTransfer(IN PDEVICE_OBJECT FdoDevice, IN struct _URB_ISOCH_TRANSFER *Urb, IN PUSBPORT_TRANSFER Transfer)
PDEVICE_OBJECT RootHubPdo
Definition: usbport.h:294
struct _USBPORT_COMMON_DEVICE_EXTENSION USBPORT_COMMON_DEVICE_EXTENSION
struct _USB2_TT_ENDPOINT * PUSB2_TT_ENDPOINT
Definition: usbport.h:160
Definition: bufpool.h:45
VOID NTAPI USBPORT_DumpingIDs(IN PVOID Buffer)
Definition: debug.c:257
struct _USBPORT_PIPE_HANDLE USBPORT_PIPE_HANDLE
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:424
PUSBPORT_CONFIGURATION_HANDLE ConfigHandle
Definition: usbport.h:194
ULONG NTAPI USBPORT_LogEntry(IN PVOID MiniPortExtension, IN ULONG DriverTag, IN ULONG EnumTag, IN ULONG P1, IN ULONG P2, IN ULONG P3)
Definition: debug.c:60
LIST_ENTRY EndpointList
Definition: usbport.h:332
VOID NTAPI USBPORT_WorkerRequestDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:701
SIZE_T PortTransferLength
Definition: usbport.h:251
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
Definition: usbport.h:181
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:253
ULONG Bandwidth[USB2_FRAMES]
Definition: usbport.h:552
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:675
PDEVICE_OBJECT RootHubPdo
Definition: usbport.h:549
LIST_ENTRY TransferLink
Definition: usbport.h:257
PUSB2_TT_ENDPOINT IsoEndpoint
Definition: usbport.h:528
PIRP NTAPI USBPORT_PeekNextIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext)
Definition: queue.c:46
const KSDEVICE_DESCRIPTOR DeviceDescriptor
Definition: splitter.c:257
NTSTATUS NTAPI USBPORT_PdoInternalDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: ioctl.c:317
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:511
struct _USB2_TT_ENDPOINT * NextTtEndpoint
Definition: usbport.h:512
NTSTATUS NTAPI USBPORT_GetRegistryKeyValueFullInfo(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice, IN BOOL UseDriverKey, IN PCWSTR SourceString, IN ULONG LengthStr, IN PVOID Buffer, IN ULONG NumberOfBytes)
Definition: usbport.c:296
KSPIN_LOCK DoneTransferSpinLock
Definition: usbport.h:343
NTSTATUS NTAPI USBPORT_IdleNotification(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: power.c:612
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ULONG MaxHsBusAllocation
Definition: usbport.h:563
struct _USB2_FRAME_BUDGET USB2_FRAME_BUDGET
USBPORT_DEVICE_HANDLE DeviceHandle
Definition: usbport.h:422
LIST_ENTRY InterfaceHandleList
Definition: usbport.h:173
ASYNC_TIMER_CALLBACK * CallbackFunction
Definition: usbport.h:437
ULONG EndpointWorker
Definition: usbport.h:212
VOID NTAPI USBPORT_InvalidateControllerHandler(IN PDEVICE_OBJECT FdoDevice, IN ULONG Type)
Definition: usbport.c:635
BOOLEAN NTAPI USBPORT_StartTimer(IN PDEVICE_OBJECT FdoDevice, IN ULONG Time)
Definition: usbport.c:1675
struct _USBPORT_ENDPOINT USBPORT_ENDPOINT
USBPORT_RESOURCES UsbPortResources
Definition: usbport.h:308
ULONG MaxTime
Definition: usbport.h:538
Definition: xml2sdb.h:79
KSPIN_LOCK FlushTransferSpinLock
Definition: usbport.h:345
PVOID MiniportTransfer
Definition: usbport.h:250
struct _USBPORT_IRP_TABLE USBPORT_IRP_TABLE
KSPIN_LOCK EndpointClosedSpinLock
Definition: usbport.h:337
struct _USBPORT_ENDPOINT * PUSBPORT_ENDPOINT
Definition: usbport.h:155
Type
Definition: Type.h:6
USB2_TT_ENDPOINT IntEndpoint[USB2_FRAMES]
Definition: usbport.h:539
PUSBPORT_DEVICE_HANDLE DeviceHandle
Definition: usbport.h:208
RH_INIT_CALLBACK * PRH_INIT_CALLBACK
Definition: hubbusif.h:270
UCHAR StartMicroframe
Definition: usbport.h:524
BOOLEAN NTAPI USBPORT_QueueActiveUrbToEndpoint(IN PUSBPORT_ENDPOINT Endpoint, IN PURB Urb)
Definition: queue.c:988
struct _USBPORT_DEVICE_EXTENSION * PUSBPORT_DEVICE_EXTENSION
struct _USBPORT_RH_DESCRIPTORS * PUSBPORT_RH_DESCRIPTORS
VOID NTAPI USBPORT_HcWakeDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: power.c:52
LIST_ENTRY CloseLink
Definition: usbport.h:234
UCHAR Padded[2]
Definition: usbport.h:218
struct _USBPORT_IRP_TABLE * LinkNextTable
Definition: usbport.h:276
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
Definition: iofuncs.h:800
ULONG DelayTime
Definition: usbport.h:537
LIST_ENTRY EndpointClosedList
Definition: usbport.h:336
NTSTATUS NTAPI USBPORT_PdoQueryInterface(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: iface.c:782
CHAR Message[80]
Definition: alive.c:5
VOID NTAPI USBPORT_FlushMapTransfers(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:2483
VOID NTAPI USBPORT_RootHubPowerAndChirpAllCcPorts(IN PDEVICE_OBJECT FdoDevice)
Definition: roothub.c:963
USHORT PreviosPeriod
Definition: usbport.h:517
VOID NTAPI USBPORT_CompleteCanceledBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:246
USB_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: usbport.h:410
unsigned char UCHAR
Definition: xmlstorage.h:181
VOID NTAPI USBPORT_AcquireBadRequestLock(IN PIO_CSQ Csq, IN PKIRQL Irql)
Definition: queue.c:214
NTSTATUS NTAPI USBPORT_PdoDeviceControl(PDEVICE_OBJECT PdoDevice, PIRP Irp)
struct _USB2_HC_EXTENSION * PUSB2_HC_EXTENSION
Definition: usbport.h:157
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1909
VOID NTAPI USBPORT_MiniportInterrupts(IN PDEVICE_OBJECT FdoDevice, IN BOOLEAN IsEnable)
Definition: usbport.c:555
ULONG BusBandwidth
Definition: usbport.h:551
VOID NTAPI USBPORT_CompleteTransfer(IN PURB Urb, IN USBD_STATUS TransferStatus)
Definition: usbport.c:2198
LIST_ENTRY FlushControllerLink
Definition: usbport.h:237
Definition: ketypes.h:687
LONG USBD_STATUS
Definition: usb.h:165
struct _USBPORT_CONFIGURATION_HANDLE * PUSBPORT_CONFIGURATION_HANDLE
USHORT CalcBusTime
Definition: usbport.h:520
NTSTATUS NTAPI USBPORT_InitializeDevice(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice)
Definition: device.c:1316
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
LIST_ENTRY PipeHandleList
Definition: usbport.h:193
KIRQL * PKIRQL
Definition: env_spec_w32.h:592
ULONG NTAPI USBPORT_CompleteIsoTransfer(IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint, IN PVOID TransferParameters, IN ULONG TransferLength)
Definition: iso.c:25
struct _USBPORT_CONFIGURATION_HANDLE USBPORT_CONFIGURATION_HANDLE
PUSB2_TT Tt
Definition: usbport.h:510
USB2_TT_ENDPOINT_NUMS Nums
Definition: usbport.h:514
struct _USB2_FRAME_BUDGET * PUSB2_FRAME_BUDGET
Definition: typedefs.h:119
NTSTATUS NTAPI USBPORT_USBDStatusToNtStatus(IN PURB Urb, IN USBD_STATUS USBDStatus)
Definition: usbport.c:485
LONG FlushPendingLock
Definition: usbport.h:220
VOID NTAPI USBPORT_QueueTransferUrb(IN PURB Urb)
Definition: queue.c:1085
struct _USBPORT_PIPE_HANDLE * PUSBPORT_PIPE_HANDLE
VOID NTAPI USBPORT_UpdateAllocatedBwTt(IN PUSB2_TT_EXTENSION TtExtension)
Definition: usb2.c:1768
USB_HUB_DESCRIPTOR Descriptor
Definition: usbport.h:414
PUSBPORT_COMMON_BUFFER_HEADER MiniPortCommonBuffer
Definition: usbport.h:309
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
Definition: hubbusif.h:40
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor
Definition: usbport.h:165
VOID NTAPI USBPORT_AddDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:769
PIRP NTAPI USBPORT_RemovePendingTransferIrp(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: queue.c:369
USBPORT_PIPE_HANDLE PipeHandle
Definition: usbport.h:190
PUSB2_TT_ENDPOINT AltEndpoint
Definition: usbport.h:530
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
VOID NTAPI USBPORT_FlushCancelList(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:714
VOID NTAPI USBPORT_DumpingConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor)
Definition: debug.c:105
USBPORT_ENDPOINT_PROPERTIES EndpointProperties
Definition: usbport.h:211
struct _USBPORT_TRANSFER * PUSBPORT_TRANSFER
VOID NTAPI USBPORT_AddPipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:444
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:675
struct _USBPORT_DEVICE_HANDLE * PUSBPORT_DEVICE_HANDLE
VOID NTAPI USBPORT_DumpingEndpointProperties(IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties)
Definition: debug.c:280
VOID NTAPI USBPORT_DumpingCapabilities(IN PDEVICE_CAPABILITIES Capabilities)
Definition: debug.c:170
BOOLEAN NTAPI USBPORT_EndpointHasQueuedTransfers(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PULONG TransferCount)
Definition: endpoint.c:254
Definition: csq.h:222
SIZE_T FullTransferLength
Definition: usbport.h:252
ULONG_PTR SIZE_T
Definition: typedefs.h:80
VOID NTAPI USBPORT_InsertBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:143
KIRQL EndpointStateOldIrql
Definition: usbport.h:217
KSPIN_LOCK WorkerThreadEventSpinLock
Definition: usbport.h:357
VOID NTAPI USBPORT_DpcHandler(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:864
DEVICE_POWER_STATE DevicePowerState
Definition: usbport.h:287
LIST_ENTRY PipeLink
Definition: usbport.h:168
VOID NTAPI USBPORT_DumpingSetupPacket(IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket)
Definition: debug.c:212
struct _USBPORT_DEVICE_HANDLE USBPORT_DEVICE_HANDLE
PUSB2_TT_ENDPOINT RebalanceEndpoint[USB2_FRAMES - 2]
Definition: usbport.h:570
VOID NTAPI USBPORT_IsrDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:1031
NTSTATUS NTAPI USBPORT_GetSymbolicName(IN PDEVICE_OBJECT RootHubPdo, IN PUNICODE_STRING DestinationString)
Definition: ioctl.c:62
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
Definition: acpixf.h:1220
KSPIN_LOCK TimerFlagsSpinLock
Definition: usbport.h:352
UNICODE_STRING SymbolicLinkName
Definition: usbport.h:285
ULONG NTAPI USBPORT_TestDebugBreak(IN PVOID MiniPortExtension)
Definition: debug.c:30
LIST_ENTRY RebalanceLink
Definition: usbport.h:240
Definition: usb.h:529
struct _USB2_TT USB2_TT
unsigned short USHORT
Definition: pedump.c:61
PIRP NTAPI USBPORT_PeekNextBadRequest(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext)
Definition: queue.c:169
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:420
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
USBPORT_PIPE_HANDLE PipeHandle[1]
Definition: usbport.h:183
LIST_ENTRY StateChangeLink
Definition: usbport.h:224
NTSTATUS NTAPI USBPORT_RootHubCreateDevice(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice)
Definition: roothub.c:747
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1035
unsigned int * PULONG
Definition: retypes.h:1
static HANDLE PipeHandle
Definition: dhcpcsvc.c:22
union _USB2_TT_ENDPOINT_PARAMS USB2_TT_ENDPOINT_PARAMS
VOID NTAPI USBPORT_AddUSB1Fdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:66
PDEVICE_OBJECT NTAPI USBPORT_FindUSB2Controller(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:27
struct _USBPORT_ASYNC_CALLBACK_DATA USBPORT_ASYNC_CALLBACK_DATA
ULONG NTAPI USBPORT_InvalidateRootHub(PVOID MiniPortExtension)
Definition: roothub.c:917
VOID NTAPI USBPORT_NukeAllEndpoints(IN PDEVICE_OBJECT FdoDevice)
Definition: endpoint.c:300
PHYSICAL_ADDRESS LogicalAddress
Definition: usbport.h:149
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
Definition: usbport.h:412
NTSTATUS NTAPI USBPORT_ReopenPipe(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:1165
struct _TIMER_WORK_QUEUE_ITEM TIMER_WORK_QUEUE_ITEM
LIST_ENTRY EpStateChangeList
Definition: usbport.h:334
LIST_ENTRY SplitTransfersList
Definition: usbport.h:266
_In_opt_ PIRP _In_opt_ PVOID PeekContext
Definition: csq.h:159
struct _USB2_REBALANCE * PUSB2_REBALANCE
#define USB2_FRAMES
Definition: usbport.h:452
KSEMAPHORE DeviceSemaphore
Definition: usbport.h:362
KSPIN_LOCK IdleIoCsqSpinLock
Definition: usbport.h:372
KSPIN_LOCK EndpointListSpinLock
Definition: usbport.h:333
PUSBPORT_ISO_BLOCK IsoBlockPtr
Definition: usbport.h:269
IO_CSQ Csq
Definition: csqrtns.c:46
PIRP NTAPI USBPORT_RemoveActiveTransferIrp(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: queue.c:357
VOID NTAPI USBPORT_FlushPendingTransfers(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:785
NTSTATUS NTAPI USBPORT_FdoPnP(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: pnp.c:1110
USHORT DeviceAddress
Definition: usbport.h:555
_In_ PUSB_DEVICE_HANDLE _In_ ULONG TtCount
Definition: hubbusif.h:239
PKINTERRUPT InterruptObject
Definition: usbport.h:323
struct _USBPORT_RHDEVICE_EXTENSION USBPORT_RHDEVICE_EXTENSION
BOOLEAN NTAPI USBPORT_ValidatePipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:469
#define OUT
Definition: typedefs.h:40
KSPIN_LOCK RootHubCallbackSpinLock
Definition: usbport.h:295
PIRP irp[0X200]
Definition: usbport.h:277
VOID NTAPI USBPORT_FlushAbortList(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:605
PDEVICE_RELATIONS NTAPI USBPORT_FindCompanionControllers(IN PDEVICE_OBJECT USB2FdoDevice, IN BOOLEAN IsObRefer, IN BOOLEAN IsFDOsReturned)
Definition: usbport.c:136
unsigned int ULONG
Definition: retypes.h:1
ULONG FrameNumber
Definition: usbport.h:213
LIST_ENTRY TtList
Definition: usbport.h:201
USHORT Reserved2
Definition: usbport.h:522
KSPIN_LOCK PowerWakeSpinLock
Definition: usbport.h:385
PUSBPORT_RH_DESCRIPTORS RootHubDescriptors
Definition: usbport.h:423
KSPIN_LOCK TransferSpinLock
Definition: usbport.h:265
KSPIN_LOCK MapTransferSpinLock
Definition: usbport.h:341
VOID NTAPI USBPORT_RemoveBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:160
_Outptr_ PUSB_DEVICE_HANDLE * NewDeviceHandle
Definition: hubbusif.h:40
USB_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: usbport.h:196
VOID NTAPI USBPORT_FlushController(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1259
ULONG TimeCS[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:543
USB_ENDPOINT_DESCRIPTOR EndPointDescriptor
Definition: usbport.h:413
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:167
VOID NTAPI USB2_InitTT(IN PUSB2_HC_EXTENSION HcExtension, IN PUSB2_TT Tt)
Definition: usb2.c:2160
USBD_STATUS USBDStatus
Definition: usbport.h:258
struct _USBPORT_RH_DESCRIPTORS USBPORT_RH_DESCRIPTORS
VOID NTAPI USBPORT_FlushClosedEndpointList(IN PDEVICE_OBJECT FdoDevice)
Definition: endpoint.c:1281
ULONG CompletedTransferLen
Definition: usbport.h:259
PUSB2_TT_EXTENSION TtExtension
Definition: usbport.h:200
PVOID MapRegisterBase
Definition: usbport.h:261
USBPORT_COMMON_DEVICE_EXTENSION CommonExtension
Definition: usbport.h:418
LIST_ENTRY TtLink
Definition: usbport.h:239
LIST_ENTRY CancelList
Definition: usbport.h:229
VOID NTAPI USBPORT_AddUSB2Fdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:82
KSPIN_LOCK EndpointSpinLock
Definition: usbport.h:215
VOID NTAPI USBPORT_CancelSplitTransfer(IN PUSBPORT_TRANSFER SplitTransfer)
Definition: trfsplit.c:314
struct _USB2_TT_EXTENSION USB2_TT_EXTENSION
KSPIN_LOCK USBPORT_SpinLock
Definition: usbport.c:22
struct _USBPORT_INTERFACE_HANDLE * PUSBPORT_INTERFACE_HANDLE
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4751
BUS_INTERFACE_STANDARD BusInterface
Definition: usbport.h:312
VOID NTAPI USBPORT_RemoveIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:37
static PLARGE_INTEGER Time
Definition: time.c:105
LIST_ENTRY USBPORT_MiniPortDrivers
Definition: usbport.c:18
VOID NTAPI USBPORT_ClosePipe(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:590
NTSTATUS NTAPI USBPORT_FdoInternalDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: ioctl.c:454
VOID NTAPI USBPORT_FindUrbInIrpTable(IN PUSBPORT_IRP_TABLE IrpTable, IN PURB Urb, IN PIRP Irp)
Definition: queue.c:381
KSPIN_LOCK MiniportInterruptsSpinLock
Definition: usbport.h:327
NTSTATUS NTAPI USBPORT_GetUsbDescriptor(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice, IN UCHAR Type, IN PUCHAR ConfigDesc, IN PULONG ConfigDescSize)
Definition: device.c:1425
PUSB2_TT_ENDPOINT IntEndpoint
Definition: usbport.h:529
VOID NTAPI USBPORT_RootHubEndpointWorker(PUSBPORT_ENDPOINT Endpoint)
VOID NTAPI USBPORT_CompletePdoWaitWake(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:15
NTSTATUS NTAPI USBPORT_PdoPower(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: power.c:322
VOID NTAPI USBPORT_StopWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1455
_In_opt_ PVOID DeferredContext
Definition: ketypes.h:675
struct _USBPORT_INTERFACE_HANDLE USBPORT_INTERFACE_HANDLE