source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/usbbusif.h@ 1175

Last change on this file since 1175 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 5.8 KB
Line 
1#pragma once
2
3#define _USBBUSIF_
4
5#ifndef USB_BUSIFFN
6#if defined(_ARM_)
7#define USB_BUSIFFN
8#else
9#define USB_BUSIFFN __stdcall
10#endif
11#endif
12
13#if (NTDDI_VERSION >= NTDDI_WINXP)
14
15#if !defined(_HUBBUSIF_)
16typedef PVOID PUSB_DEVICE_HANDLE;
17#endif
18
19typedef NTSTATUS
20(USB_BUSIFFN *PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB) (
21 IN PVOID,
22 IN PURB);
23
24#define USB_HCD_CAPS_SUPPORTS_RT_THREADS 0x00000001
25
26typedef VOID
27(USB_BUSIFFN *PUSB_BUSIFFN_GETUSBDI_VERSION) (
28 IN PVOID,
29 OUT PUSBD_VERSION_INFORMATION OPTIONAL,
30 OUT PULONG OPTIONAL);
31
32typedef NTSTATUS
33(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME) (
34 IN PVOID,
35 OUT PULONG OPTIONAL);
36
37typedef NTSTATUS
38(USB_BUSIFFN *PUSB_BUSIFFN_ENUM_LOG_ENTRY) (
39 IN PVOID,
40 IN ULONG,
41 IN ULONG,
42 IN ULONG,
43 IN ULONG);
44
45typedef struct _USB_BUS_INFORMATION_LEVEL_0 {
46 ULONG TotalBandwidth;
47 ULONG ConsumedBandwidth;
48} USB_BUS_INFORMATION_LEVEL_0, *PUSB_BUS_INFORMATION_LEVEL_0;
49
50typedef struct _USB_BUS_INFORMATION_LEVEL_1 {
51 ULONG TotalBandwidth;
52 ULONG ConsumedBandwidth;
53 ULONG ControllerNameLength;
54 WCHAR ControllerNameUnicodeString[1];
55} USB_BUS_INFORMATION_LEVEL_1, *PUSB_BUS_INFORMATION_LEVEL_1;
56
57typedef NTSTATUS
58(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_INFORMATION) (
59 IN PVOID,
60 IN ULONG,
61 IN OUT PVOID,
62 OUT PULONG,
63 OUT PULONG OPTIONAL);
64
65typedef BOOLEAN
66(USB_BUSIFFN *PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED) (
67 IN PVOID OPTIONAL);
68
69#define USB_BUSIF_USBDI_VERSION_0 0x0000
70#define USB_BUSIF_USBDI_VERSION_1 0x0001
71#define USB_BUSIF_USBDI_VERSION_2 0x0002
72#define USB_BUSIF_USBDI_VERSION_3 0x0003
73
74DEFINE_GUID(USB_BUS_INTERFACE_USBDI_GUID,
750xb1a96a13, 0x3de0, 0x4574, 0x9b, 0x1, 0xc0, 0x8f, 0xea, 0xb3, 0x18, 0xd6);
76
77typedef struct _USB_BUS_INTERFACE_USBDI_V0 {
78 USHORT Size;
79 USHORT Version;
80 PVOID BusContext;
81 PINTERFACE_REFERENCE InterfaceReference;
82 PINTERFACE_DEREFERENCE InterfaceDereference;
83 PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
84 PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
85 PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
86 PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
87} USB_BUS_INTERFACE_USBDI_V0, *PUSB_BUS_INTERFACE_USBDI_V0;
88
89typedef struct _USB_BUS_INTERFACE_USBDI_V1 {
90 USHORT Size;
91 USHORT Version;
92 PVOID BusContext;
93 PINTERFACE_REFERENCE InterfaceReference;
94 PINTERFACE_DEREFERENCE InterfaceDereference;
95 PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
96 PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
97 PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
98 PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
99 PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
100} USB_BUS_INTERFACE_USBDI_V1, *PUSB_BUS_INTERFACE_USBDI_V1;
101
102typedef struct _USB_BUS_INTERFACE_USBDI_V2 {
103 USHORT Size;
104 USHORT Version;
105 PVOID BusContext;
106 PINTERFACE_REFERENCE InterfaceReference;
107 PINTERFACE_DEREFERENCE InterfaceDereference;
108 PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
109 PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
110 PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
111 PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
112 PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
113 PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
114} USB_BUS_INTERFACE_USBDI_V2, *PUSB_BUS_INTERFACE_USBDI_V2;
115
116#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
117
118#if (NTDDI_VERSION >= NTDDI_VISTA)
119
120typedef NTSTATUS
121(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME_EX) (
122 IN PVOID OPTIONAL,
123 OUT PULONG OPTIONAL);
124
125typedef NTSTATUS
126(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE) (
127 IN PVOID OPTIONAL,
128 OUT PULONG OPTIONAL,
129 OUT PUSHORT OPTIONAL,
130 OUT PUSHORT OPTIONAL,
131 OUT PUCHAR OPTIONAL,
132 OUT PUCHAR OPTIONAL,
133 OUT PUCHAR OPTIONAL,
134 OUT PUCHAR OPTIONAL);
135
136typedef struct _USB_BUS_INTERFACE_USBDI_V3 {
137 USHORT Size;
138 USHORT Version;
139 PVOID BusContext;
140 PINTERFACE_REFERENCE InterfaceReference;
141 PINTERFACE_DEREFERENCE InterfaceDereference;
142 PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
143 PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
144 PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
145 PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
146 PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
147 PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
148 PUSB_BUSIFFN_QUERY_BUS_TIME_EX QueryBusTimeEx;
149 PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE QueryControllerType;
150} USB_BUS_INTERFACE_USBDI_V3, *PUSB_BUS_INTERFACE_USBDI_V3;
151
152DEFINE_GUID(USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID,
153 0x893b6a96, 0xb7f, 0x4d4d, 0xbd, 0xb4, 0xbb, 0xd4, 0xce, 0xeb, 0xb3, 0x1c);
154
155#define USBC_FUNCTION_FLAG_APPEND_ID 0x1
156
157typedef struct _USBC_FUNCTION_DESCRIPTOR{
158 UCHAR FunctionNumber;
159 UCHAR NumberOfInterfaces;
160 PUSB_INTERFACE_DESCRIPTOR *InterfaceDescriptorList;
161 UNICODE_STRING HardwareId;
162 UNICODE_STRING CompatibleId;
163 UNICODE_STRING FunctionDescription;
164 ULONG FunctionFlags;
165 PVOID Reserved;
166} USBC_FUNCTION_DESCRIPTOR, *PUSBC_FUNCTION_DESCRIPTOR;
167
168typedef
169NTSTATUS
170(USB_BUSIFFN *USBC_START_DEVICE_CALLBACK)(
171 IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor,
172 IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
173 OUT PUSBC_FUNCTION_DESCRIPTOR *FunctionDescriptorBuffer,
174 OUT PULONG FunctionDescriptorBufferLength,
175 IN PDEVICE_OBJECT FdoDeviceObject,
176 IN PDEVICE_OBJECT PdoDeviceObject);
177
178typedef
179BOOLEAN
180(USB_BUSIFFN *USBC_PDO_ENABLE_CALLBACK)(
181 IN PVOID Context,
182 IN USHORT FirstInterfaceNumber,
183 IN USHORT NumberOfInterfaces,
184 IN UCHAR FunctionClass,
185 IN UCHAR FunctionSubClass,
186 IN UCHAR FunctionProtocol);
187
188#define USBC_DEVICE_CONFIGURATION_INTERFACE_VERSION_1 0x0001
189
190typedef struct _USBC_DEVICE_CONFIGURATION_INTERFACE_V1 {
191 USHORT Size;
192 USHORT Version;
193 PVOID Context;
194 PINTERFACE_REFERENCE InterfaceReference;
195 PINTERFACE_DEREFERENCE InterfaceDereference;
196 USBC_START_DEVICE_CALLBACK StartDeviceCallback;
197 USBC_PDO_ENABLE_CALLBACK PdoEnableCallback;
198 PVOID Reserved[7];
199} USBC_DEVICE_CONFIGURATION_INTERFACE_V1, *PUSBC_DEVICE_CONFIGURATION_INTERFACE_V1;
200
201#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
202
Note: See TracBrowser for help on using the repository browser.