2 * Declarations for undocumented usbport.sys calls
4 * Written by Filip Navara <xnavara@volny.cz>
5 * Updates by Mark Tempel
11 #define USB_CONTROLLER_INTERFACE_TAG 0x001E1E10
13 /**** B E G I N M S I N T E R N A L P R O T O C O L ****/
14 typedef DWORD (*POPEN_ENDPOINT
)(
20 typedef NTSTATUS (*PPOKE_ENDPOINT
)(
26 typedef DWORD (*PQUERY_ENDPOINT_REQUIREMENTS
)(
32 typedef VOID (*PCLOSE_ENDPOINT
)(
40 DWORD Unknown1
; /* 2 (UHCI), 3 (EHCI) */
41 DWORD Unknown2
; /* 2C3 (UHCI), 95 (EHCI) */
42 DWORD Unknown3
; /* 2EE0 (UHCI), 61A80 (EHCI) */
43 DWORD Unknown4
; /* - */
44 DWORD Unknown5
; /* 164 (UHCI), 178 (EHCI) */
45 DWORD Unknown6
; /* 8C (UHCI), A0 (EHCI) */
46 DWORD Unknown7
; /* 1C (UHCI), 30 (EHCI) */ /* Offset: 118 */
47 DWORD Unknown8
; /* - */
48 DWORD Unknown9
; /* - */
49 DWORD Unknown10
; /* 2280 (UHCI), 2C800 (EHCI) */ /* Offset: 124 */
50 POPEN_ENDPOINT OpenEndpoint
;
51 PPOKE_ENDPOINT PokeEndpoint
;
52 PQUERY_ENDPOINT_REQUIREMENTS QueryEndpointRequirements
;
53 PCLOSE_ENDPOINT CloseEndpoint
;
54 PVOID StartController
; /* P00010A1C (2) */ /* Offset: 138 */
55 PVOID StopController
; /* P00010952 */ /* Offset: 13C */
56 PVOID SuspendController
; /* P00011584 */ /* Offset: 140 */
57 PVOID ResumeController
; /* P0001164C */ /* Offset: 144 */
58 PVOID InterruptService
; /* P00013C72 */ /* Offset: 148 */
59 PVOID InterruptDpc
; /* P00013D8E */ /* Offset: 14C */
60 PVOID SubmitTransfer
; /* P00011010 */ /* Offset: 150 */
61 PVOID IsochTransfer
; /* P000136E8 */ /* Offset: 154 */
62 PVOID AbortTransfer
; /* P00011092 */ /* Offset: 158 */
63 PVOID GetEndpointState
; /* P00010F48 */ /* Offset: 15C */
64 PVOID SetEndpointState
; /* P00010EFA */ /* Offset: 160 */
65 PVOID PollEndpoint
; /* P00010D32 */ /* Offset: 164 */
66 PVOID CheckController
; /* P00011794 */ /* Offset: 168 */
67 PVOID Get32BitFrameNumber
; /* P00010F86 */ /* Offset: 16C */
68 PVOID InterruptNextSOF
; /* P00013F56 */ /* Offset: 170 */
69 PVOID EnableInterrupts
; /* P00013ED0 */ /* Offset: 174 */
70 PVOID DisableInterrupts
; /* P00013E18 */ /* Offset: 178 */
71 PVOID PollController
; /* P00010FF2 */ /* Offset: 17C */
72 PVOID SetEndpointDataToggle
; /* P000110E6 */ /* Offset: 180 */
73 PVOID GetEndpointStatus
; /* P00010ECE */ /* Offset: 184 */
74 PVOID SetEndpointStatus
; /* P00010E52 */ /* Offset: 188 */
75 DWORD Unknown36
; /* - */
76 PVOID RHGetRootHubData
; /* P00011AC6 */ /* Offset: 190 */
77 PVOID RHGetStatus
; /* P00011B1A */ /* Offset: 194 */
78 PVOID RHGetPortStatus
; /* P00011BBA */ /* Offset: 198 */
79 PVOID RHGetHubStatus
; /* P00011B28 */ /* Offset: 19C */
80 PVOID RHSetFeaturePortReset
; /* P00011F84 */ /* Offset: 1A0 */
81 PVOID RHSetFeaturePortPower
; /* P00011BB4 */ /* Offset: 1A4 */
82 PVOID RHSetFeaturePortEnable
; /* P00011BA2 */ /* Offset: 1A8 */
83 PVOID RHSetFeaturePortSuspend
; /* P00011FF8 */ /* Offset: 1AC */
84 PVOID RHClearFeaturePortEnable
; /* P00011B90 */ /* Offset: 1B0 */
85 PVOID RHClearFeaturePortPower
; /* P00011BB4 */ /* Offset: 1B4 */
86 PVOID RHClearFeaturePortSuspend
; /* P0001210E */ /* Offset: 1B8 */
87 PVOID RHClearFeaturePortEnableChange
; /* P00012236 */ /* Offset: 1BC */
88 PVOID RHClearFeaturePortConnectChange
; /* P000121DE */ /* Offset: 1C0 */
89 PVOID RHClearFeaturePortResetChange
; /* P00012284 */ /* Offset: 1C4 */
90 PVOID RHClearFeaturePortSuspendChange
; /* P0001229C */ /* Offset: 1C8 */
91 PVOID RHClearFeaturePortOvercurrentChange
; /* P000122B4 */ /* Offset: 1CC */
92 PVOID RHDisableIrq
; /* P00013F52 */ /* Offset: 1D0 */
93 PVOID RHDisableIrq2
; /* P00013F52 */ /* Offset: 1D4 */
94 PVOID StartSendOnePacket
; /* P00011144 */ /* Offset: 1D8 */
95 PVOID EndSendOnePacket
; /* P000119B6 */ /* Offset: 1DC */
96 PVOID PassThru
; /* P000110E0 */ /* Offset: 1E0 */
97 DWORD Unknown58
[17]; /* - */
98 PVOID FlushInterrupts
; /* P00013EA0 */ /* Offset: 228 */
100 } USB_CONTROLLER_INTERFACE
, *PUSB_CONTROLLER_INTERFACE
;
101 /**** E N D M S I N T E R N A L P R O T O C O L ****/
104 * With this call USB miniport driver registers itself with usbport.sys
106 * Unknown1 - Could be 0x64 or 0xC8. (0x9A also ?)
107 * Unknown2 - Pointer to structure which contains function entry points
110 USBPORT_RegisterUSBPortDriver(PDRIVER_OBJECT DriverObject
, DWORD Unknown1
,
111 PUSB_CONTROLLER_INTERFACE Interface
);
114 * This function always returns 0x10000001 in Windows XP SP1
117 USBPORT_GetHciMn(VOID
);
120 * This method is provided for miniports to use to allocate their USB_CONTROLLER_INTERFACEs.
123 USBPORT_AllocateUsbControllerInterface(OUT PUSB_CONTROLLER_INTERFACE
*pControllerInterface
);
126 * We can't have an allocate without a free.
129 USBPORT_FreeUsbControllerInterface(IN PUSB_CONTROLLER_INTERFACE ControllerInterface
);
130 #endif /* _USBPORT_H */