ReactOS 0.4.16-dev-297-gc569aee
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
159typedef struct _USB2_TT *PUSB2_TT;
161
162typedef struct _USBPORT_PIPE_HANDLE {
170
174 //USB_CONFIGURATION_DESCRIPTOR CfgDescriptor; // Body.
176
185
200 PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
203
204typedef struct _USBPORT_ENDPOINT {
209 PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
214 /* Locks */
221 /* State */
226 /* Transfer lists */
231 /* Links */
242
243typedef struct _USBPORT_ISO_BLOCK *PUSBPORT_ISO_BLOCK;
244
245typedef 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
275typedef 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)
405#else
406C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x700);
407#endif
408
414 USB_HUB_DESCRIPTOR Descriptor; // Size may be: 7 + 2[1..32] (7 + 2..64)
416
431
437 ASYNC_TIMER_CALLBACK *CallbackFunction;
440
441C_ASSERT(sizeof(USBPORT_ASYNC_CALLBACK_DATA) == 16 + 18 * sizeof(PVOID));
442
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
497
499 struct {
503 };
506
508
509typedef struct _USB2_TT_ENDPOINT {
526
527typedef struct _USB2_FRAME_BUDGET {
534
535typedef struct _USB2_TT {
545
546#define USB2_TT_EXTENSION_FLAG_DELETED 1
547
548typedef struct _USB2_TT_EXTENSION {
561
562typedef struct _USB2_HC_EXTENSION {
568
569typedef struct _USB2_REBALANCE {
572
573/* usbport.c */
575NTAPI
577 IN PURB Urb,
578 IN USBD_STATUS USBDStatus);
579
581NTAPI
583 IN PVOID MiniPortExtension,
584 IN ULONG Milliseconds);
585
586VOID
587NTAPI
589 IN PRKDPC Dpc,
593
595NTAPI
597 IN PDEVICE_OBJECT FdoDevice);
598
599VOID
600NTAPI
602 IN PDEVICE_OBJECT FdoDevice);
603
605NTAPI
607 IN PDEVICE_OBJECT FdoDevice,
608 IN ULONG Time);
609
611NTAPI
613 IN PDEVICE_OBJECT FdoDevice,
615
616VOID
617NTAPI
619 IN PDEVICE_OBJECT FdoDevice,
620 IN PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer);
621
623NTAPI
625 IN PDEVICE_OBJECT FdoDevice,
626 IN PURB Urb,
628 IN PIRP Irp,
630
631VOID
632NTAPI
634 IN PDEVICE_OBJECT FdoDevice);
635
636VOID
637NTAPI
639 IN PRKDPC Dpc,
643
645NTAPI
649
650VOID
651NTAPI
653 IN PDEVICE_OBJECT FdoDevice);
654
655VOID
656NTAPI
658 IN PURB Urb,
659 IN USBD_STATUS TransferStatus);
660
661VOID
662NTAPI
664 IN PDEVICE_OBJECT FdoDevice);
665
666VOID
667NTAPI
669 IN PRKDPC Dpc,
673
675NTAPI
677 IN PUSBPORT_TRANSFER Transfer,
678 IN USBD_STATUS USBDStatus);
679
680VOID
681NTAPI
683 IN PDEVICE_OBJECT FdoDevice,
684 IN BOOLEAN IsEnable);
685
687NTAPI
690 IN BOOL UseDriverKey,
691 IN ULONG Type,
692 IN PCWSTR ValueNameString,
693 IN PVOID Data,
695
697NTAPI
699 IN PDEVICE_OBJECT FdoDevice,
700 IN PDEVICE_OBJECT PdoDevice,
701 IN BOOL UseDriverKey,
703 IN ULONG LengthStr,
706
707VOID
708NTAPI
710 IN PDEVICE_OBJECT FdoDevice);
711
712VOID
713NTAPI
715 IN PDEVICE_OBJECT FdoDevice);
716
717VOID
718NTAPI
720 IN PDEVICE_OBJECT FdoDevice);
721
723NTAPI
725 IN PDEVICE_OBJECT FdoDevice);
726
728NTAPI
730 IN PDEVICE_OBJECT USB2FdoDevice,
731 IN BOOLEAN IsObRefer,
732 IN BOOLEAN IsFDOsReturned);
733
734VOID
735NTAPI
737 IN PDEVICE_OBJECT FdoDevice,
738 IN ULONG Type);
739
740VOID
741NTAPI
743 IN PUSBPORT_TRANSFER Transfer);
744
745/* debug.c */
746ULONG
748 IN PVOID MiniPortExtension,
749 IN ULONG Level,
750 IN PCH Format,
751 ...);
752
753ULONG
754NTAPI
756 IN PVOID MiniPortExtension);
757
758ULONG
759NTAPI
761 PVOID MiniPortExtension,
762 PVOID FailedAssertion,
765 PCHAR Message);
766
767VOID
768NTAPI
770 IN PVOID MiniPortExtension);
771
772ULONG
773NTAPI
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
782VOID
783NTAPI
786
787VOID
788NTAPI
791
792VOID
793NTAPI
796
797VOID
798NTAPI
801
802VOID
803NTAPI
805 IN PURB Urb);
806
807VOID
808NTAPI
810 IN PVOID Buffer);
811
812/* device.c */
814NTAPI
816 IN PDEVICE_OBJECT FdoDevice,
817 IN PIRP Irp,
818 IN PURB Urb);
819
820VOID
821NTAPI
823 IN PDEVICE_OBJECT FdoDevice,
825
826VOID
827NTAPI
829 IN PDEVICE_OBJECT FdoDevice,
831
833NTAPI
835 IN PDEVICE_OBJECT FdoDevice,
837
839NTAPI
841 IN OUT PUSB_DEVICE_HANDLE *pUsbdDeviceHandle,
842 IN PDEVICE_OBJECT FdoDevice,
845 IN USHORT Port);
846
848NTAPI
851 IN PDEVICE_OBJECT FdoDevice);
852
854NTAPI
857 IN PDEVICE_OBJECT FdoDevice,
858 IN UCHAR Type,
859 IN PUCHAR ConfigDesc,
860 IN PULONG ConfigDescSize);
861
863NTAPI
865 IN PDEVICE_OBJECT FdoDevice,
866 IN PIRP Irp,
867 IN PURB Urb);
868
870NTAPI
872 IN PDEVICE_OBJECT FdoDevice,
874 IN ULONG Flags);
875
877NTAPI
880 IN PDEVICE_OBJECT FdoDevice,
884 IN OUT PULONG TransferedLen,
885 IN OUT PUSBD_STATUS pUSBDStatus);
886
888NTAPI
890 IN PDEVICE_OBJECT FdoDevice,
893
895NTAPI
897 IN PDEVICE_OBJECT FdoDevice,
900
901/* endpoint.c */
903NTAPI
905 IN PDEVICE_OBJECT FdoDevice,
909
911NTAPI
913 IN PDEVICE_OBJECT FdoDevice,
914 IN PUSBPORT_ENDPOINT Endpoint);
915
917NTAPI
919 IN PDEVICE_OBJECT FdoDevice,
920 IN PUSBPORT_ENDPOINT Endpoint);
921
922VOID
923NTAPI
926 IN PDEVICE_OBJECT FdoDevice,
928
929VOID
930NTAPI
932 IN PDEVICE_OBJECT FdoDevice,
933 IN PUSBPORT_ENDPOINT Endpoint);
934
935VOID
936NTAPI
940
941VOID
942NTAPI
946
948NTAPI
952
953VOID
954NTAPI
956 IN PDEVICE_OBJECT FdoDevice);
957
958VOID
959NTAPI
961 IN PUSBPORT_ENDPOINT Endpoint,
962 IN ULONG State);
963
964ULONG
965NTAPI
967 IN PUSBPORT_ENDPOINT Endpoint);
968
969VOID
970NTAPI
972 IN PDEVICE_OBJECT FdoDevice,
973 IN PUSBPORT_ENDPOINT Endpoint,
974 IN ULONG Type);
975
977NTAPI
979 IN PUSBPORT_ENDPOINT Endpoint,
980 IN BOOLEAN Flag);
981
982VOID
983NTAPI
985 IN PDEVICE_OBJECT FdoDevice);
986
988NTAPI
990 IN PDEVICE_OBJECT FdoDevice,
991 IN PUSBPORT_ENDPOINT Endpoint,
992 IN PULONG TransferCount);
993
994/* iface.c */
996NTAPI
998 IN PDEVICE_OBJECT FdoDevice,
999 IN PDEVICE_OBJECT PdoDevice,
1000 IN PIRP Irp);
1001
1002/* ioctl.c */
1004NTAPI
1006 PDEVICE_OBJECT PdoDevice,
1007 PIRP Irp);
1008
1010NTAPI
1012 PDEVICE_OBJECT FdoDevice,
1013 PIRP Irp);
1014
1016NTAPI
1018 IN PDEVICE_OBJECT FdoDevice,
1019 IN PIRP Irp);
1020
1022NTAPI
1024 IN PDEVICE_OBJECT FdoDevice,
1025 IN PIRP Irp);
1026
1028NTAPI
1030 IN PDEVICE_OBJECT RootHubPdo,
1032
1033/* iso.c */
1035NTAPI
1037 IN PDEVICE_OBJECT FdoDevice,
1038 IN struct _URB_ISOCH_TRANSFER * Urb,
1039 IN PUSBPORT_TRANSFER Transfer);
1040
1041ULONG
1042NTAPI
1044 IN PVOID MiniPortExtension,
1045 IN PVOID MiniPortEndpoint,
1046 IN PVOID TransferParameters,
1047 IN ULONG TransferLength);
1048
1049/* pnp.c */
1051NTAPI
1053 IN PDEVICE_OBJECT FdoDevice,
1054 IN PIRP Irp);
1055
1057NTAPI
1059 IN PDEVICE_OBJECT FdoDevice,
1060 IN PIRP Irp);
1061
1062/* power.c */
1064NTAPI
1066 IN PDEVICE_OBJECT PdoDevice,
1067 IN PIRP Irp);
1068
1070NTAPI
1072 IN PDEVICE_OBJECT FdoDevice,
1073 IN PIRP Irp);
1074
1076NTAPI
1078 IN PDEVICE_OBJECT PdoDevice,
1079 IN PIRP Irp);
1080
1081VOID
1082NTAPI
1084 IN PDEVICE_OBJECT FdoDevice,
1085 IN PDEVICE_OBJECT PdoDevice);
1086
1087VOID
1088NTAPI
1090 IN PVOID Context);
1091
1092VOID
1093NTAPI
1095 IN PDEVICE_OBJECT FdoDevice);
1096
1097VOID
1098NTAPI
1100 IN PDEVICE_OBJECT FdoDevice);
1101
1102VOID
1103NTAPI
1105 IN PRKDPC Dpc,
1109
1110VOID
1111NTAPI
1113 IN PDEVICE_OBJECT FdoDevice);
1114
1115/* queue.c */
1116VOID
1117NTAPI
1119 IN PIO_CSQ Csq,
1120 IN PIRP Irp);
1121
1122VOID
1123NTAPI
1125 IN PIO_CSQ Csq,
1126 IN PIRP Irp);
1127
1128PIRP
1129NTAPI
1131 IN PIO_CSQ Csq,
1132 IN PIRP Irp,
1134
1135VOID
1136NTAPI
1138 IN PIO_CSQ Csq,
1139 IN PKIRQL Irql);
1140
1141VOID
1142NTAPI
1144 IN PIO_CSQ Csq,
1145 IN KIRQL Irql);
1146
1147VOID
1148NTAPI
1150 IN PIO_CSQ Csq,
1151 IN PIRP Irp);
1152
1153VOID
1154NTAPI
1156 IN PIO_CSQ Csq,
1157 IN PIRP Irp);
1158
1159VOID
1160NTAPI
1162 IN PIO_CSQ Csq,
1163 IN PIRP Irp);
1164
1165PIRP
1166NTAPI
1168 IN PIO_CSQ Csq,
1169 IN PIRP Irp,
1171
1172VOID
1173NTAPI
1175 IN PIO_CSQ Csq,
1176 IN PKIRQL Irql);
1177
1178VOID
1179NTAPI
1181 IN PIO_CSQ Csq,
1182 IN KIRQL Irql);
1183
1184VOID
1185NTAPI
1187 IN PIO_CSQ Csq,
1188 IN PIRP Irp);
1189
1190VOID
1191NTAPI
1193 IN PUSBPORT_IRP_TABLE IrpTable,
1194 IN PIRP Irp);
1195
1196PIRP
1197NTAPI
1199 IN PDEVICE_OBJECT FdoDevice,
1200 IN PIRP Irp);
1201
1202PIRP
1203NTAPI
1205 IN PDEVICE_OBJECT FdoDevice,
1206 IN PIRP Irp);
1207
1208VOID
1209NTAPI
1211 IN PUSBPORT_IRP_TABLE IrpTable,
1212 IN PURB Urb,
1213 IN PIRP Irp);
1214
1215VOID
1216NTAPI
1219 IN PIRP Irp);
1220
1221VOID
1222NTAPI
1224 IN PUSBPORT_ENDPOINT Endpoint);
1225
1226VOID
1227NTAPI
1229 IN PUSBPORT_ENDPOINT Endpoint);
1230
1231VOID
1232NTAPI
1234 IN PURB Urb);
1235
1236VOID
1237NTAPI
1239 IN PDEVICE_OBJECT FdoDevice);
1240
1241VOID
1242NTAPI
1244 IN PUSBPORT_ENDPOINT Endpoint);
1245
1246BOOLEAN
1247NTAPI
1249 IN PUSBPORT_ENDPOINT Endpoint,
1250 IN PURB Urb);
1251
1252VOID
1253NTAPI
1255 IN PDEVICE_OBJECT FdoDevice);
1256
1257VOID
1258NTAPI
1260 IN PDEVICE_OBJECT FdoDevice);
1261
1262VOID
1263NTAPI
1265 IN PDEVICE_OBJECT FdoDevice,
1266 IN PUSBPORT_ENDPOINT Endpoint,
1267 IN PIRP Irp);
1268
1269/* roothub.c */
1270VOID
1271NTAPI
1273 PUSBPORT_ENDPOINT Endpoint);
1274
1276NTAPI
1278 IN PDEVICE_OBJECT FdoDevice,
1279 IN PDEVICE_OBJECT PdoDevice);
1280
1281ULONG
1282NTAPI
1284 PVOID MiniPortExtension);
1285
1286VOID
1287NTAPI
1289 IN PDEVICE_OBJECT FdoDevice);
1290
1291/* trfsplit.c */
1292VOID
1293NTAPI
1295 IN PDEVICE_OBJECT FdoDevice,
1296 IN PUSBPORT_ENDPOINT Endpoint,
1297 IN PUSBPORT_TRANSFER Transfer,
1299
1300VOID
1301NTAPI
1303 IN PUSBPORT_TRANSFER SplitTransfer);
1304
1305VOID
1306NTAPI
1308 IN PUSBPORT_TRANSFER SplitTransfer);
1309
1310/* urb.c */
1312NTAPI
1314 IN PDEVICE_OBJECT PdoDevice,
1315 IN PIRP Irp,
1316 IN PURB Urb);
1317
1318/* usb2.c */
1319BOOLEAN
1320NTAPI
1322 IN PDEVICE_OBJECT FdoDevice,
1323 IN PUSBPORT_ENDPOINT Endpoint);
1324
1325VOID
1326NTAPI
1328 IN PDEVICE_OBJECT FdoDevice,
1329 IN PUSBPORT_ENDPOINT Endpoint);
1330
1331VOID
1332NTAPI
1334 IN PUSB2_TT_EXTENSION TtExtension);
1335
1336VOID
1337NTAPI
1339 IN PUSB2_HC_EXTENSION HcExtension,
1340 IN PUSB2_TT Tt);
1341
1342VOID
1343NTAPI
1345 IN PUSB2_HC_EXTENSION HcExtension);
1346
1347VOID
1348NTAPI
1350 IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties);
1351
1352VOID
1353NTAPI
1355 IN PUSB2_TT_ENDPOINT TtEndpoint);
1356
1357#endif /* USBPORT_H__ */
unsigned char BOOLEAN
Type
Definition: Type.h:7
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
LONG NTSTATUS
Definition: precomp.h:26
Definition: bufpool.h:45
_In_ PIRP Irp
Definition: csq.h:116
_In_opt_ PIRP _In_opt_ PVOID PeekContext
Definition: csq.h:160
_Out_ PKIRQL Irql
Definition: csq.h:179
IO_CSQ Csq
Definition: csqrtns.c:46
static HANDLE PipeHandle
Definition: dhcpcsvc.c:22
static const WCHAR Message[]
Definition: register.c:74
UCHAR KIRQL
Definition: env_spec_w32.h:591
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
KIRQL * PKIRQL
Definition: env_spec_w32.h:592
unsigned int BOOL
Definition: ntddk_ex.h:94
CPPORT Port[4]
Definition: headless.c:35
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
_Outptr_ PUSB_DEVICE_HANDLE * NewDeviceHandle
Definition: hubbusif.h:40
_Inout_ PUSB_DEVICE_HANDLE OldDeviceHandle
Definition: hubbusif.h:161
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE HubDeviceHandle
Definition: hubbusif.h:41
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
Definition: hubbusif.h:121
RH_INIT_CALLBACK * PRH_INIT_CALLBACK
Definition: hubbusif.h:270
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
Definition: hubbusif.h:42
_In_ PUSB_DEVICE_HANDLE _In_ ULONG TtCount
Definition: hubbusif.h:240
#define C_ASSERT(e)
Definition: intsafe.h:73
static PLARGE_INTEGER Time
Definition: time.c:105
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1922
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1921
CHAR * PCH
Definition: ntbasedef.h:399
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
const KSDEVICE_DESCRIPTOR DeviceDescriptor
Definition: splitter.c:257
Definition: xml2sdb.h:80
Definition: csq.h:222
Definition: ketypes.h:699
Definition: typedefs.h:120
WORK_QUEUE_ITEM WqItem
Definition: usbport.h:444
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:445
Definition: usb.h:529
PUSB2_TT_ENDPOINT IntEndpoint
Definition: usbport.h:529
USHORT Reserved2
Definition: usbport.h:532
PUSB2_TT_ENDPOINT IsoEndpoint
Definition: usbport.h:528
PUSB2_TT_ENDPOINT AltEndpoint
Definition: usbport.h:530
ULONG MaxHsBusAllocation
Definition: usbport.h:563
ULONG TimeUsed[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:565
PUSB2_TT_ENDPOINT RebalanceEndpoint[USB2_FRAMES - 2]
Definition: usbport.h:570
USB2_TT_ENDPOINT_PARAMS TtEndpointParams
Definition: usbport.h:513
USHORT Reserved2
Definition: usbport.h:522
USHORT StartTime
Definition: usbport.h:521
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:511
PUSB2_TT Tt
Definition: usbport.h:510
struct _USB2_TT_ENDPOINT * NextTtEndpoint
Definition: usbport.h:512
USHORT PreviosPeriod
Definition: usbport.h:517
USB2_TT_ENDPOINT_NUMS Nums
Definition: usbport.h:514
USHORT ActualPeriod
Definition: usbport.h:519
USHORT MaxPacketSize
Definition: usbport.h:516
USHORT CalcBusTime
Definition: usbport.h:520
UCHAR StartMicroframe
Definition: usbport.h:524
UCHAR StartFrame
Definition: usbport.h:523
LIST_ENTRY Link
Definition: usbport.h:558
ULONG MaxBandwidth
Definition: usbport.h:553
ULONG BusBandwidth
Definition: usbport.h:551
PDEVICE_OBJECT RootHubPdo
Definition: usbport.h:549
USHORT DeviceAddress
Definition: usbport.h:555
ULONG Bandwidth[USB2_FRAMES]
Definition: usbport.h:552
LIST_ENTRY EndpointList
Definition: usbport.h:557
ULONG MinBandwidth
Definition: usbport.h:554
USB2_TT_ENDPOINT IsoEndpoint[USB2_FRAMES]
Definition: usbport.h:540
ULONG TimeCS[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:543
PUSB2_HC_EXTENSION HcExtension
Definition: usbport.h:536
ULONG MaxTime
Definition: usbport.h:538
USB2_FRAME_BUDGET FrameBudget[USB2_FRAMES]
Definition: usbport.h:541
ULONG NumStartSplits[USB2_FRAMES][USB2_MICROFRAMES]
Definition: usbport.h:542
ULONG DelayTime
Definition: usbport.h:537
USB2_TT_ENDPOINT IntEndpoint[USB2_FRAMES]
Definition: usbport.h:539
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:434
ASYNC_TIMER_CALLBACK * CallbackFunction
Definition: usbport.h:437
PHYSICAL_ADDRESS LogicalAddress
Definition: usbport.h:149
DEVICE_POWER_STATE DevicePowerState
Definition: usbport.h:287
UNICODE_STRING SymbolicLinkName
Definition: usbport.h:285
PDEVICE_OBJECT LowerPdoDevice
Definition: usbport.h:282
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
Definition: usbport.h:172
LIST_ENTRY InterfaceHandleList
Definition: usbport.h:173
LIST_ENTRY EpStateChangeList
Definition: usbport.h:334
KSPIN_LOCK DeviceHandleSpinLock
Definition: usbport.h:361
USBPORT_COMMON_DEVICE_EXTENSION CommonExtension
Definition: usbport.h:292
DEVICE_CAPABILITIES Capabilities
Definition: usbport.h:364
KSPIN_LOCK IdleIoCsqSpinLock
Definition: usbport.h:372
KSPIN_LOCK PowerWakeSpinLock
Definition: usbport.h:385
KSPIN_LOCK MiniportSpinLock
Definition: usbport.h:310
KSPIN_LOCK SetPowerD0SpinLock
Definition: usbport.h:386
KSPIN_LOCK EpStateChangeSpinLock
Definition: usbport.h:335
KSPIN_LOCK WorkerThreadEventSpinLock
Definition: usbport.h:357
LIST_ENTRY DoneTransferList
Definition: usbport.h:342
PUSBPORT_MINIPORT_INTERFACE MiniPortInterface
Definition: usbport.h:307
KSPIN_LOCK RootHubCallbackSpinLock
Definition: usbport.h:295
PUSBPORT_COMMON_BUFFER_HEADER MiniPortCommonBuffer
Definition: usbport.h:309
USBPORT_RESOURCES UsbPortResources
Definition: usbport.h:308
KSPIN_LOCK DoneTransferSpinLock
Definition: usbport.h:343
LIST_ENTRY DeviceHandleList
Definition: usbport.h:360
PDMA_ADAPTER DmaAdapter
Definition: usbport.h:320
KSPIN_LOCK EndpointListSpinLock
Definition: usbport.h:333
KSPIN_LOCK FlushTransferSpinLock
Definition: usbport.h:345
BUS_INTERFACE_STANDARD BusInterface
Definition: usbport.h:312
PUSB2_HC_EXTENSION Usb2Extension
Definition: usbport.h:390
KSPIN_LOCK BadRequestIoCsqSpinLock
Definition: usbport.h:377
LIST_ENTRY EndpointClosedList
Definition: usbport.h:336
KSPIN_LOCK FlushPendingTransferSpinLock
Definition: usbport.h:346
KSEMAPHORE DeviceSemaphore
Definition: usbport.h:362
LIST_ENTRY ControllerLink
Definition: usbport.h:302
KSPIN_LOCK MiniportInterruptsSpinLock
Definition: usbport.h:327
UNICODE_STRING DosDeviceSymbolicName
Definition: usbport.h:300
KSPIN_LOCK MapTransferSpinLock
Definition: usbport.h:341
LIST_ENTRY MapTransferList
Definition: usbport.h:340
LARGE_INTEGER IdleTime
Definition: usbport.h:370
KSPIN_LOCK EndpointClosedSpinLock
Definition: usbport.h:337
LIST_ENTRY BadRequestList
Definition: usbport.h:378
LIST_ENTRY EndpointList
Definition: usbport.h:332
PDEVICE_OBJECT RootHubPdo
Definition: usbport.h:294
PUSBPORT_IRP_TABLE ActiveIrpTable
Definition: usbport.h:382
LIST_ENTRY IdleIrpList
Definition: usbport.h:373
PKINTERRUPT InterruptObject
Definition: usbport.h:323
KSEMAPHORE ControllerSemaphore
Definition: usbport.h:298
PUSBPORT_IRP_TABLE PendingIrpTable
Definition: usbport.h:381
KSPIN_LOCK TimerFlagsSpinLock
Definition: usbport.h:352
PUSB2_TT_EXTENSION TtExtension
Definition: usbport.h:200
LIST_ENTRY TtList
Definition: usbport.h:201
USB_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: usbport.h:196
USBPORT_PIPE_HANDLE PipeHandle
Definition: usbport.h:190
LIST_ENTRY PipeHandleList
Definition: usbport.h:193
LIST_ENTRY DeviceHandleLink
Definition: usbport.h:197
PUSBPORT_CONFIGURATION_HANDLE ConfigHandle
Definition: usbport.h:194
struct _USBPORT_DEVICE_HANDLE * HubDeviceHandle
Definition: usbport.h:195
LIST_ENTRY FlushControllerLink
Definition: usbport.h:237
KIRQL EndpointOldIrql
Definition: usbport.h:216
LIST_ENTRY EndpointLink
Definition: usbport.h:232
PUSBPORT_DEVICE_HANDLE DeviceHandle
Definition: usbport.h:208
KSPIN_LOCK StateChangeSpinLock
Definition: usbport.h:225
LIST_ENTRY CancelList
Definition: usbport.h:229
LIST_ENTRY CloseLink
Definition: usbport.h:234
LIST_ENTRY StateChangeLink
Definition: usbport.h:224
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:206
KIRQL EndpointStateOldIrql
Definition: usbport.h:217
LIST_ENTRY PendingTransferList
Definition: usbport.h:227
LIST_ENTRY TransferList
Definition: usbport.h:228
LIST_ENTRY FlushAbortLink
Definition: usbport.h:238
KSPIN_LOCK EndpointSpinLock
Definition: usbport.h:215
ULONG EndpointWorker
Definition: usbport.h:212
PUSB2_TT_ENDPOINT TtEndpoint
Definition: usbport.h:210
LIST_ENTRY TtLink
Definition: usbport.h:239
LONG FlushPendingLock
Definition: usbport.h:220
PUSB2_TT_EXTENSION TtExtension
Definition: usbport.h:209
LIST_ENTRY AbortList
Definition: usbport.h:230
LIST_ENTRY RebalanceLink
Definition: usbport.h:240
ULONG FrameNumber
Definition: usbport.h:213
LIST_ENTRY DispatchLink
Definition: usbport.h:235
USBPORT_ENDPOINT_PROPERTIES EndpointProperties
Definition: usbport.h:211
UCHAR Padded[2]
Definition: usbport.h:218
LIST_ENTRY FlushLink
Definition: usbport.h:236
LIST_ENTRY WorkerLink
Definition: usbport.h:233
PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer
Definition: usbport.h:207
USBPORT_PIPE_HANDLE PipeHandle[1]
Definition: usbport.h:183
LIST_ENTRY InterfaceLink
Definition: usbport.h:178
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
Definition: usbport.h:181
PIRP irp[0X200]
Definition: usbport.h:277
struct _USBPORT_IRP_TABLE * LinkNextTable
Definition: usbport.h:276
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor
Definition: usbport.h:165
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:167
LIST_ENTRY PipeLink
Definition: usbport.h:168
USBPORT_COMMON_DEVICE_EXTENSION CommonExtension
Definition: usbport.h:418
PRH_INIT_CALLBACK RootHubInitCallback
Definition: usbport.h:426
DEVICE_CAPABILITIES Capabilities
Definition: usbport.h:428
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:424
PUSBPORT_RH_DESCRIPTORS RootHubDescriptors
Definition: usbport.h:423
PDEVICE_OBJECT FdoDevice
Definition: usbport.h:420
USBPORT_DEVICE_HANDLE DeviceHandle
Definition: usbport.h:422
USB_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: usbport.h:410
USB_HUB_DESCRIPTOR Descriptor
Definition: usbport.h:414
USB_CONFIGURATION_DESCRIPTOR ConfigDescriptor
Definition: usbport.h:411
USB_ENDPOINT_DESCRIPTOR EndPointDescriptor
Definition: usbport.h:413
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
Definition: usbport.h:412
SIZE_T PortTransferLength
Definition: usbport.h:251
ULONG CompletedTransferLen
Definition: usbport.h:259
PMDL TransferBufferMDL
Definition: usbport.h:255
PUSBPORT_ISO_BLOCK IsoBlockPtr
Definition: usbport.h:269
ULONG NumberOfMapRegisters
Definition: usbport.h:260
PRKEVENT Event
Definition: usbport.h:249
USBD_STATUS USBDStatus
Definition: usbport.h:258
KSPIN_LOCK TransferSpinLock
Definition: usbport.h:265
struct _USBPORT_TRANSFER * ParentTransfer
Definition: usbport.h:264
PVOID MiniportTransfer
Definition: usbport.h:250
LIST_ENTRY SplitTransfersList
Definition: usbport.h:266
LARGE_INTEGER Time
Definition: usbport.h:263
PVOID MapRegisterBase
Definition: usbport.h:261
USBPORT_TRANSFER_PARAMETERS TransferParameters
Definition: usbport.h:254
LIST_ENTRY SplitLink
Definition: usbport.h:267
PUSBPORT_ENDPOINT Endpoint
Definition: usbport.h:253
SIZE_T FullTransferLength
Definition: usbport.h:252
LIST_ENTRY TransferLink
Definition: usbport.h:257
USBPORT_SCATTER_GATHER_LIST SgList
Definition: usbport.h:271
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
LONG USBD_STATUS
Definition: usb.h:165
ULONG MPSTATUS
Definition: usbmport.h:131
VOID NTAPI USBPORT_DoneSplitTransfer(IN PUSBPORT_TRANSFER SplitTransfer)
Definition: trfsplit.c:278
NTSTATUS NTAPI USBPORT_RemoveDevice(IN PDEVICE_OBJECT FdoDevice, IN OUT PUSBPORT_DEVICE_HANDLE DeviceHandle, IN ULONG Flags)
Definition: device.c:1584
NTSTATUS NTAPI USBPORT_FdoInternalDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: ioctl.c:454
struct _USB2_TT_ENDPOINT * PUSB2_TT_ENDPOINT
Definition: usbport.h:160
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
VOID NTAPI USBPORT_AbortEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PIRP Irp)
Definition: queue.c:1354
struct _USBPORT_PIPE_HANDLE USBPORT_PIPE_HANDLE
VOID NTAPI USBPORT_CancelActiveTransferIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: queue.c:529
BOOLEAN NTAPI USBPORT_QueueDoneTransfer(IN PUSBPORT_TRANSFER Transfer, IN USBD_STATUS USBDStatus)
Definition: usbport.c:839
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
VOID NTAPI USBPORT_TransferFlushDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:825
struct _USBPORT_IRP_TABLE * PUSBPORT_IRP_TABLE
VOID NTAPI USBPORT_ReleaseIdleLock(IN PIO_CSQ Csq, IN KIRQL Irql)
Definition: queue.c:107
VOID NTAPI USBPORT_DumpingEndpointProperties(IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties)
Definition: debug.c:280
BOOLEAN NTAPI USBPORT_ValidateDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:801
struct _USB2_TT_EXTENSION USB2_TT_EXTENSION
struct _USBPORT_CONFIGURATION_HANDLE USBPORT_CONFIGURATION_HANDLE
VOID NTAPI USBPORT_DoSetPowerD0(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:104
KSPIN_LOCK USBPORT_SpinLock
Definition: usbport.c:22
VOID NTAPI USBPORT_DoneTransfer(IN PUSBPORT_TRANSFER Transfer)
Definition: usbport.c:724
VOID NTAPI USBPORT_InsertIrpInTable(IN PUSBPORT_IRP_TABLE IrpTable, IN PIRP Irp)
Definition: queue.c:266
struct _USBPORT_ENDPOINT * PUSBPORT_ENDPOINT
Definition: usbport.h:155
VOID NTAPI USBPORT_DumpingSetupPacket(IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket)
Definition: debug.c:212
VOID NTAPI USBPORT_DumpingDeviceDescriptor(IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor)
Definition: debug.c:79
struct _USBPORT_TRANSFER * PUSBPORT_TRANSFER
BOOLEAN NTAPI USBPORT_EndpointWorker(IN PUSBPORT_ENDPOINT Endpoint, IN BOOLEAN Flag)
Definition: endpoint.c:1656
VOID NTAPI USBPORT_CancelSplitTransfer(IN PUSBPORT_TRANSFER SplitTransfer)
Definition: trfsplit.c:314
struct _USB2_FRAME_BUDGET * PUSB2_FRAME_BUDGET
VOID NTAPI USBPORT_HcWakeDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: power.c:52
VOID NTAPI USBPORT_DumpingURB(IN PURB Urb)
Definition: debug.c:224
BOOLEAN NTAPI USBPORT_AllocateBandwidthUSB2(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: usb2.c:1799
VOID NTAPI USB2_InitController(IN PUSB2_HC_EXTENSION HcExtension)
Definition: usb2.c:2217
union _USB2_TT_ENDPOINT_PARAMS USB2_TT_ENDPOINT_PARAMS
NTSTATUS NTAPI USBPORT_FdoPower(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: power.c:489
struct _USBPORT_COMMON_DEVICE_EXTENSION USBPORT_COMMON_DEVICE_EXTENSION
struct _USBPORT_DEVICE_HANDLE * PUSBPORT_DEVICE_HANDLE
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
VOID NTAPI USBPORT_DumpingConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor)
Definition: debug.c:105
VOID NTAPI USB2_InitTT(IN PUSB2_HC_EXTENSION HcExtension, IN PUSB2_TT Tt)
Definition: usb2.c:2160
NTSTATUS NTAPI USBPORT_PdoPower(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: power.c:322
VOID NTAPI USBPORT_DumpingTtEndpoint(IN PUSB2_TT_ENDPOINT TtEndpoint)
Definition: debug.c:300
VOID NTAPI USBPORT_AdjustDeviceCapabilities(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice)
Definition: power.c:668
VOID NTAPI USBPORT_AddUSB2Fdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:82
ULONG NTAPI USBPORT_InvalidateRootHub(PVOID MiniPortExtension)
Definition: roothub.c:917
VOID NTAPI USBPORT_AddUSB1Fdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:66
VOID NTAPI USBPORT_RemoveUSBxFdo(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:98
VOID NTAPI USBPORT_BugCheck(IN PVOID MiniPortExtension)
Definition: debug.c:51
NTSTATUS NTAPI USBPORT_IdleNotification(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: power.c:612
struct _USBPORT_INTERFACE_HANDLE * PUSBPORT_INTERFACE_HANDLE
VOID NTAPI USBPORT_NukeAllEndpoints(IN PDEVICE_OBJECT FdoDevice)
Definition: endpoint.c:300
VOID NTAPI USBPORT_RemoveBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:160
struct _USBPORT_DEVICE_HANDLE USBPORT_DEVICE_HANDLE
VOID NTAPI USBPORT_CompletePdoWaitWake(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:15
VOID NTAPI USBPORT_RemovePipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:456
struct _USBPORT_COMMON_BUFFER_HEADER * PUSBPORT_COMMON_BUFFER_HEADER
VOID NTAPI USBPORT_FlushController(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1259
VOID NTAPI USBPORT_AddPipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:444
PUSBPORT_COMMON_BUFFER_HEADER NTAPI USBPORT_AllocateCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN SIZE_T BufferLength)
Definition: usbport.c:1708
ULONG NTAPI USBPORT_AssertFailure(PVOID MiniPortExtension, PVOID FailedAssertion, PVOID FileName, ULONG LineNumber, PCHAR Message)
Definition: debug.c:38
struct _USBPORT_DEVICE_EXTENSION * PUSBPORT_DEVICE_EXTENSION
struct _USBPORT_TRANSFER USBPORT_TRANSFER
struct _USB2_TT_EXTENSION * PUSB2_TT_EXTENSION
Definition: usbport.h:158
struct _USB2_TT_ENDPOINT USB2_TT_ENDPOINT
NTSTATUS NTAPI USBPORT_FdoDeviceControl(PDEVICE_OBJECT FdoDevice, PIRP Irp)
VOID NTAPI USBPORT_IsrDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:1031
PDEVICE_OBJECT NTAPI USBPORT_FindUSB2Controller(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:27
USBD_STATUS * PUSBD_STATUS
Definition: usbport.h:144
struct _USBPORT_DEVICE_EXTENSION USBPORT_DEVICE_EXTENSION
NTSTATUS NTAPI USBPORT_HandleSelectConfiguration(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: device.c:574
struct _USB2_TT * PUSB2_TT
Definition: usbport.h:159
VOID NTAPI USBPORT_StopWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1455
struct _USBPORT_COMMON_BUFFER_HEADER USBPORT_COMMON_BUFFER_HEADER
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
struct _USBPORT_RH_DESCRIPTORS * PUSBPORT_RH_DESCRIPTORS
VOID NTAPI USBPORT_InvalidateControllerHandler(IN PDEVICE_OBJECT FdoDevice, IN ULONG Type)
Definition: usbport.c:635
VOID NTAPI USBPORT_InsertIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:20
BOOLEAN NTAPI USBPORT_InterruptService(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext)
Definition: usbport.c:1077
LIST_ENTRY USBPORT_MiniPortDrivers
Definition: usbport.c:18
NTSTATUS NTAPI USBPORT_PdoDeviceControl(PDEVICE_OBJECT PdoDevice, PIRP Irp)
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
VOID NTAPI USBPORT_QueueTransferUrb(IN PURB Urb)
Definition: queue.c:1085
VOID NTAPI USBPORT_SplitTransfer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PUSBPORT_TRANSFER Transfer, IN PLIST_ENTRY List)
Definition: trfsplit.c:232
struct _TIMER_WORK_QUEUE_ITEM * PTIMER_WORK_QUEUE_ITEM
VOID NTAPI USBPORT_InvalidateEndpointHandler(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN ULONG Type)
Definition: endpoint.c:1317
NTSTATUS NTAPI USBPORT_OpenPipe(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle, IN PUSBD_STATUS UsbdStatus)
VOID NTAPI USBPORT_FreeCommonBuffer(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer)
Definition: usbport.c:1770
NTSTATUS NTAPI USBPORT_HandleSubmitURB(IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: urb.c:791
struct _USBPORT_ASYNC_CALLBACK_DATA * PUSBPORT_ASYNC_CALLBACK_DATA
VOID NTAPI USBPORT_UpdateAllocatedBwTt(IN PUSB2_TT_EXTENSION TtExtension)
Definition: usb2.c:1768
VOID NTAPI USBPORT_SignalWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1111
NTSTATUS NTAPI USBPORT_FdoPnP(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: pnp.c:1110
struct _USBPORT_ASYNC_CALLBACK_DATA USBPORT_ASYNC_CALLBACK_DATA
NTSTATUS NTAPI USBPORT_RootHubCreateDevice(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice)
Definition: roothub.c:747
PIRP NTAPI USBPORT_RemovePendingTransferIrp(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: queue.c:369
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
VOID NTAPI USBPORT_ClosePipe(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:590
VOID NTAPI USBPORT_FlushMapTransfers(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:2483
PIRP NTAPI USBPORT_PeekNextBadRequest(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext)
Definition: queue.c:169
struct _USBPORT_RHDEVICE_EXTENSION USBPORT_RHDEVICE_EXTENSION
BOOLEAN NTAPI USBPORT_EndpointHasQueuedTransfers(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint, IN PULONG TransferCount)
Definition: endpoint.c:254
NTSTATUS NTAPI USBPORT_GetSymbolicName(IN PDEVICE_OBJECT RootHubPdo, IN PUNICODE_STRING DestinationString)
Definition: ioctl.c:62
PIRP NTAPI USBPORT_PeekNextIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext)
Definition: queue.c:46
BOOLEAN NTAPI USBPORT_ValidatePipeHandle(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PUSBPORT_PIPE_HANDLE PipeHandle)
Definition: endpoint.c:469
VOID NTAPI USBPORT_FlushPendingTransfers(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:785
NTSTATUS NTAPI USBPORT_ReopenPipe(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:1165
PDEVICE_RELATIONS NTAPI USBPORT_FindCompanionControllers(IN PDEVICE_OBJECT USB2FdoDevice, IN BOOLEAN IsObRefer, IN BOOLEAN IsFDOsReturned)
Definition: usbport.c:136
VOID NTAPI USBPORT_FlushClosedEndpointList(IN PDEVICE_OBJECT FdoDevice)
Definition: endpoint.c:1281
VOID NTAPI USBPORT_DumpingIDs(IN PVOID Buffer)
Definition: debug.c:257
#define USB2_MICROFRAMES
Definition: usbport.h:453
VOID NTAPI USBPORT_FreeBandwidthUSB2(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: usb2.c:2040
VOID NTAPI USBPORT_RootHubEndpointWorker(PUSBPORT_ENDPOINT Endpoint)
struct _USBPORT_RH_DESCRIPTORS USBPORT_RH_DESCRIPTORS
NTSTATUS NTAPI USBPORT_HandleSelectInterface(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp, IN PURB Urb)
Definition: device.c:1486
VOID NTAPI USBPORT_InsertBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:143
VOID NTAPI USBPORT_CompleteCanceledBadRequest(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:246
struct _USBPORT_ENDPOINT USBPORT_ENDPOINT
MPSTATUS NTAPI MiniportOpenEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:722
ULONG NTAPI USBPORT_TestDebugBreak(IN PVOID MiniPortExtension)
Definition: debug.c:30
NTSTATUS NTAPI USBPORT_CreateWorkerThread(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:1427
struct _USBPORT_INTERFACE_HANDLE USBPORT_INTERFACE_HANDLE
#define USB2_FRAMES
Definition: usbport.h:452
USBD_STATUS NTAPI USBPORT_InitializeIsoTransfer(IN PDEVICE_OBJECT FdoDevice, IN struct _URB_ISOCH_TRANSFER *Urb, IN PUSBPORT_TRANSFER Transfer)
VOID NTAPI USBPORT_HcQueueWakeDpc(IN PDEVICE_OBJECT FdoDevice)
Definition: power.c:63
VOID NTAPI USBPORT_SetEndpointState(IN PUSBPORT_ENDPOINT Endpoint, IN ULONG State)
Definition: endpoint.c:363
VOID NTAPI USBPORT_DumpingCapabilities(IN PDEVICE_CAPABILITIES Capabilities)
Definition: debug.c:170
NTSTATUS NTAPI USBPORT_PdoPnP(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: pnp.c:1517
VOID NTAPI USBPORT_MiniportInterrupts(IN PDEVICE_OBJECT FdoDevice, IN BOOLEAN IsEnable)
Definition: usbport.c:555
VOID NTAPI MiniportCloseEndpoint(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:549
struct _USB2_REBALANCE * PUSB2_REBALANCE
struct _USB2_FRAME_BUDGET USB2_FRAME_BUDGET
VOID NTAPI USBPORT_RemoveDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:784
struct _USBPORT_COMMON_DEVICE_EXTENSION * PUSBPORT_COMMON_DEVICE_EXTENSION
ULONG USBPORT_DbgPrint(IN PVOID MiniPortExtension, IN ULONG Level, IN PCH Format,...)
Definition: debug.c:19
VOID NTAPI USBPORT_FlushAllEndpoints(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1171
union _USB2_TT_ENDPOINT_NUMS USB2_TT_ENDPOINT_NUMS
VOID NTAPI USBPORT_FindUrbInIrpTable(IN PUSBPORT_IRP_TABLE IrpTable, IN PURB Urb, IN PIRP Irp)
Definition: queue.c:381
NTSTATUS NTAPI USBPORT_Initialize20Hub(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE HubDeviceHandle, IN ULONG TtCount)
Definition: device.c:2012
VOID NTAPI USBPORT_ReleaseBadRequestLock(IN PIO_CSQ Csq, IN KIRQL Irql)
Definition: queue.c:230
ULONG NTAPI USBPORT_GetEndpointState(IN PUSBPORT_ENDPOINT Endpoint)
Definition: endpoint.c:332
NTSTATUS NTAPI USBPORT_PdoInternalDeviceControl(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: ioctl.c:317
VOID NTAPI USBPORT_CompleteCanceledIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:123
PIRP NTAPI USBPORT_RemoveActiveTransferIrp(IN PDEVICE_OBJECT FdoDevice, IN PIRP Irp)
Definition: queue.c:357
VOID NTAPI USBPORT_AcquireBadRequestLock(IN PIO_CSQ Csq, IN PKIRQL Irql)
Definition: queue.c:214
NTSTATUS NTAPI USBPORT_InitializeDevice(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, IN PDEVICE_OBJECT FdoDevice)
Definition: device.c:1316
VOID NTAPI USBPORT_CompleteTransfer(IN PURB Urb, IN USBD_STATUS TransferStatus)
Definition: usbport.c:2198
BOOLEAN NTAPI USBPORT_QueueActiveUrbToEndpoint(IN PUSBPORT_ENDPOINT Endpoint, IN PURB Urb)
Definition: queue.c:988
struct _USBPORT_PIPE_HANDLE * PUSBPORT_PIPE_HANDLE
struct _USBPORT_ISO_BLOCK * PUSBPORT_ISO_BLOCK
Definition: usbport.h:243
VOID NTAPI USBPORT_AcquireIdleLock(IN PIO_CSQ Csq, IN PKIRQL Irql)
Definition: queue.c:91
struct _USB2_HC_EXTENSION * PUSB2_HC_EXTENSION
Definition: usbport.h:157
struct _TIMER_WORK_QUEUE_ITEM TIMER_WORK_QUEUE_ITEM
VOID NTAPI USBPORT_BadRequestFlush(IN PDEVICE_OBJECT FdoDevice)
Definition: queue.c:1328
NTSTATUS NTAPI USBPORT_RestoreDevice(IN PDEVICE_OBJECT FdoDevice, IN OUT PUSBPORT_DEVICE_HANDLE OldDeviceHandle, IN OUT PUSBPORT_DEVICE_HANDLE NewDeviceHandle)
Definition: device.c:1701
VOID NTAPI USBPORT_RemoveIdleIrp(IN PIO_CSQ Csq, IN PIRP Irp)
Definition: queue.c:37
struct _USB2_REBALANCE USB2_REBALANCE
VOID NTAPI USBPORT_AddDeviceHandle(IN PDEVICE_OBJECT FdoDevice, IN PUSBPORT_DEVICE_HANDLE DeviceHandle)
Definition: device.c:769
VOID NTAPI USBPORT_FlushCancelList(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:714
VOID NTAPI USBPORT_RootHubPowerAndChirpAllCcPorts(IN PDEVICE_OBJECT FdoDevice)
Definition: roothub.c:963
struct _USBPORT_RHDEVICE_EXTENSION * PUSBPORT_RHDEVICE_EXTENSION
VOID NTAPI USBPORT_WorkerRequestDpc(IN PRKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: usbport.c:701
VOID NTAPI USBPORT_FlushAbortList(IN PUSBPORT_ENDPOINT Endpoint)
Definition: queue.c:605
struct _USBPORT_IRP_TABLE USBPORT_IRP_TABLE
VOID NTAPI USBPORT_DoIdleNotificationCallback(IN PVOID Context)
Definition: power.c:545
struct _USB2_TT USB2_TT
NTSTATUS NTAPI USBPORT_PdoQueryInterface(IN PDEVICE_OBJECT FdoDevice, IN PDEVICE_OBJECT PdoDevice, IN PIRP Irp)
Definition: iface.c:782
struct _USB2_HC_EXTENSION USB2_HC_EXTENSION
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
struct _USBPORT_CONFIGURATION_HANDLE * PUSBPORT_CONFIGURATION_HANDLE
ULONG NTAPI USBPORT_CompleteIsoTransfer(IN PVOID MiniPortExtension, IN PVOID MiniPortEndpoint, IN PVOID TransferParameters, IN ULONG TransferLength)
Definition: iso.c:25
NTSTATUS NTAPI USBPORT_Wait(IN PVOID MiniPortExtension, IN ULONG Milliseconds)
Definition: usbport.c:543
NTSTATUS NTAPI USBPORT_USBDStatusToNtStatus(IN PURB Urb, IN USBD_STATUS USBDStatus)
Definition: usbport.c:485
VOID NTAPI USBPORT_DpcHandler(IN PDEVICE_OBJECT FdoDevice)
Definition: usbport.c:864
BOOLEAN NTAPI USBPORT_StartTimer(IN PDEVICE_OBJECT FdoDevice, IN ULONG Time)
Definition: usbport.c:1675
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:112
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:379
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
_In_ NTSTATUS _In_ USBD_STATUS UsbdStatus
Definition: wdfusb.h:403
_Must_inspect_result_ _In_ WDFUSBDEVICE _Out_writes_bytes_to_opt_ ConfigDescriptorLength PVOID ConfigDescriptor
Definition: wdfusb.h:1036
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET SetupPacket
Definition: wdfusb.h:1337
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:56
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
Definition: iofuncs.h:801
DEVICE_CAPABILITIES
Definition: iotypes.h:965
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1036
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:688
_In_opt_ PVOID DeferredContext
Definition: ketypes.h:687
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:689
unsigned char UCHAR
Definition: xmlstorage.h:181