d3dx9_36: Remove useless includes.
[wine] / include / ddk / usb.h
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #ifndef __DDK_USB_H__
20 #define __DDK_USB_H__
21
22 #include <ddk/usb200.h>
23
24 #define URB_FUNCTION_SELECT_CONFIGURATION            0x0000
25 #define URB_FUNCTION_SELECT_INTERFACE                0x0001
26 #define URB_FUNCTION_ABORT_PIPE                      0x0002
27 #define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL       0x0003
28 #define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL    0x0004
29 #define URB_FUNCTION_GET_FRAME_LENGTH                0x0005
30 #define URB_FUNCTION_SET_FRAME_LENGTH                0x0006
31 #define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER        0x0007
32 #define URB_FUNCTION_CONTROL_TRANSFER                0x0008
33 #define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER      0x0009
34 #define URB_FUNCTION_ISOCH_TRANSFER                  0x000A
35 #define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE      0x000B
36 #define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE        0x000C
37 #define URB_FUNCTION_SET_FEATURE_TO_DEVICE           0x000D
38 #define URB_FUNCTION_SET_FEATURE_TO_INTERFACE        0x000E
39 #define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT         0x000F
40 #define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE         0x0010
41 #define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE      0x0011
42 #define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT       0x0012
43 #define URB_FUNCTION_GET_STATUS_FROM_DEVICE          0x0013
44 #define URB_FUNCTION_GET_STATUS_FROM_INTERFACE       0x0014
45 #define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT        0x0015
46 #define URB_FUNCTION_RESERVED_0X0016                 0x0016
47 #define URB_FUNCTION_VENDOR_DEVICE                   0x0017
48 #define URB_FUNCTION_VENDOR_INTERFACE                0x0018
49 #define URB_FUNCTION_VENDOR_ENDPOINT                 0x0019
50 #define URB_FUNCTION_CLASS_DEVICE                    0x001A
51 #define URB_FUNCTION_CLASS_INTERFACE                 0x001B
52 #define URB_FUNCTION_CLASS_ENDPOINT                  0x001C
53 #define URB_FUNCTION_RESERVE_0X001D                  0x001D
54 #define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E
55 #define URB_FUNCTION_CLASS_OTHER                     0x001F
56 #define URB_FUNCTION_VENDOR_OTHER                    0x0020
57 #define URB_FUNCTION_GET_STATUS_FROM_OTHER           0x0021
58 #define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER          0x0022
59 #define URB_FUNCTION_SET_FEATURE_TO_OTHER            0x0023
60 #define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT    0x0024
61 #define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT      0x0025
62 #define URB_FUNCTION_GET_CONFIGURATION               0x0026
63 #define URB_FUNCTION_GET_INTERFACE                   0x0027
64 #define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE   0x0028
65 #define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE     0x0029
66 #define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR       0x002A
67 #define URB_FUNCTION_RESERVE_0X002B                  0x002B
68 #define URB_FUNCTION_RESERVE_0X002C                  0x002C
69 #define URB_FUNCTION_RESERVE_0X002D                  0x002D
70 #define URB_FUNCTION_RESERVE_0X002E                  0x002E
71 #define URB_FUNCTION_RESERVE_0X002F                  0x002F
72 #define URB_FUNCTION_SYNC_RESET_PIPE                 0x0030
73 #define URB_FUNCTION_SYNC_CLEAR_STALL                0x0031
74
75 #define USBD_SHORT_TRANSFER_OK                       0x00000002
76 #define USBD_TRANSFER_DIRECTION_OUT                  0
77 #define USBD_TRANSFER_DIRECTION_IN                   1
78
79 typedef LONG USBD_STATUS;
80
81 typedef PVOID USBD_PIPE_HANDLE;
82 typedef PVOID USBD_CONFIGURATION_HANDLE;
83 typedef PVOID USBD_INTERFACE_HANDLE;
84
85 #define USBD_STATUS_SUCCESS                          ((USBD_STATUS)0x00000000)
86 #define USBD_STATUS_PENDING                          ((USBD_STATUS)0x40000000)
87 #define USBD_STATUS_CRC                              ((USBD_STATUS)0xC0000001)
88 #define USBD_STATUS_BTSTUFF                          ((USBD_STATUS)0xC0000002)
89 #define USBD_STATUS_DATA_TOGGLE_MISMATCH             ((USBD_STATUS)0xC0000003)
90 #define USBD_STATUS_STALL_PID                        ((USBD_STATUS)0xC0000004)
91 #define USBD_STATUS_DEV_NOT_RESPONDING               ((USBD_STATUS)0xC0000005)
92 #define USBD_STATUS_PID_CHECK_FAILURE                ((USBD_STATUS)0xC0000006)
93 #define USBD_STATUS_UNEXPECTED_PID                   ((USBD_STATUS)0xC0000007)
94 #define USBD_STATUS_DATA_OVERRUN                     ((USBD_STATUS)0xC0000008)
95 #define USBD_STATUS_DATA_UNDERRUN                    ((USBD_STATUS)0xC0000009)
96 #define USBD_STATUS_RESERVED1                        ((USBD_STATUS)0xC000000A)
97 #define USBD_STATUS_RESERVED2                        ((USBD_STATUS)0xC000000B)
98 #define USBD_STATUS_BUFFER_OVERRUN                   ((USBD_STATUS)0xC000000C)
99 #define USBD_STATUS_BUFFER_UNDERRUN                  ((USBD_STATUS)0xC000000D)
100 #define USBD_STATUS_NOT_ACCESSED                     ((USBD_STATUS)0xC000000F)
101 #define USBD_STATUS_FIFO                             ((USBD_STATUS)0xC0000010)
102 #define USBD_STATUS_XACT_ERROR                       ((USBD_STATUS)0xC0000011)
103 #define USBD_STATUS_BABBLE_DETECTED                  ((USBD_STATUS)0xC0000012)
104 #define USBD_STATUS_DATA_BUFFER_ERROR                ((USBD_STATUS)0xC0000013)
105 #define USBD_STATUS_ENDPOINT_HALTED                  ((USBD_STATUS)0xC0000030)
106 #define USBD_STATUS_INVALID_URB_FUNCTION             ((USBD_STATUS)0x80000200)
107 #define USBD_STATUS_INVALID_PARAMETER                ((USBD_STATUS)0x80000300)
108 #define USBD_STATUS_ERROR_BUSY                       ((USBD_STATUS)0x80000400)
109 #define USBD_STATUS_INVALID_PIPE_HANDLE              ((USBD_STATUS)0x80000600)
110 #define USBD_STATUS_NO_BANDWIDTH                     ((USBD_STATUS)0x80000700)
111 #define USBD_STATUS_INTERNAL_HC_ERROR                ((USBD_STATUS)0x80000800)
112 #define USBD_STATUS_ERROR_SHORT_TRANSFER             ((USBD_STATUS)0x80000900)
113 #define USBD_STATUS_BAD_START_FRAME                  ((USBD_STATUS)0xC0000A00)
114 #define USBD_STATUS_ISOCH_REQUEST_FAILED             ((USBD_STATUS)0xC0000B00)
115 #define USBD_STATUS_FRAME_CONTROL_OWNED              ((USBD_STATUS)0xC0000C00)
116 #define USBD_STATUS_FRAME_CONTROL_NOT_OWNED          ((USBD_STATUS)0xC0000D00)
117 #define USBD_STATUS_NOT_SUPPORTED                    ((USBD_STATUS)0xC0000E00)
118 #define USBD_STATUS_INVALID_CONFIGURATION_DESCRIPTOR ((USBD_STATUS)0xC0000F00)
119 #define USBD_STATUS_INSUFFICIENT_RESOURCES           ((USBD_STATUS)0xC0001000)
120 #define USBD_STATUS_SET_CONFIG_FAILED                ((USBD_STATUS)0xC0002000)
121 #define USBD_STATUS_BUFFER_TOO_SMALL                 ((USBD_STATUS)0xC0003000)
122 #define USBD_STATUS_INTERFACE_NOT_FOUND              ((USBD_STATUS)0xC0004000)
123 #define USBD_STATUS_INVALID_PIPE_FLAGS               ((USBD_STATUS)0xC0005000)
124 #define USBD_STATUS_TIMEOUT                          ((USBD_STATUS)0xC0006000)
125 #define USBD_STATUS_DEVICE_GONE                      ((USBD_STATUS)0xC0007000)
126 #define USBD_STATUS_STATUS_NOT_MAPPED                ((USBD_STATUS)0xC0008000)
127 #define USBD_STATUS_CANCELED                         ((USBD_STATUS)0xC0010000)
128 #define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW           ((USBD_STATUS)0xC0020000)
129 #define USBD_STATUS_ISO_TD_ERROR                     ((USBD_STATUS)0xC0030000)
130 #define USBD_STATUS_ISO_NA_LATE_USBPORT              ((USBD_STATUS)0xC0040000)
131 #define USBD_STATUS_ISO_NOT_ACCESSED_LATE            ((USBD_STATUS)0xC0050000)
132
133 #define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
134 #define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
135 #define USBD_ERROR(Status)   ((USBD_STATUS)(Status) < 0)
136
137 typedef struct _USBD_VERSION_INFORMATION {
138     ULONG  USBDI_Version;
139     ULONG  Supported_USB_Version;
140 } USBD_VERSION_INFORMATION;
141 typedef struct _USBD_VERSION_INFORMATION *PUSBD_VERSION_INFORMATION;
142
143 typedef enum _USBD_PIPE_TYPE {
144     UsbdPipeTypeControl,
145     UsbdPipeTypeIsochronous,
146     UsbdPipeTypeBulk,
147     UsbdPipeTypeInterrupt
148 } USBD_PIPE_TYPE;
149
150 typedef struct _USBD_PIPE_INFORMATION {
151     USHORT MaximumPacketSize;
152     UCHAR EndpointAddress;
153     UCHAR Interval;
154     USBD_PIPE_TYPE PipeType;
155     USBD_PIPE_HANDLE PipeHandle;
156     ULONG MaximumTransferSize;
157     ULONG PipeFlags;
158 } USBD_PIPE_INFORMATION;
159 typedef struct _USBD_PIPE_INFORMATION *PUSBD_PIPE_INFORMATION;
160
161 typedef struct _USBD_INTERFACE_INFORMATION {
162     USHORT Length;
163     UCHAR InterfaceNumber;
164     UCHAR AlternateSetting;
165     UCHAR Class;
166     UCHAR SubClass;
167     UCHAR Protocol;
168     UCHAR Reserved;
169     USBD_INTERFACE_HANDLE InterfaceHandle;
170     ULONG NumberOfPipes;
171     USBD_PIPE_INFORMATION Pipes[1];
172 } USBD_INTERFACE_INFORMATION;
173 typedef struct _USBD_INTERFACE_INFORMATION *PUSBD_INTERFACE_INFORMATION;
174
175 typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
176     ULONG Offset;
177     ULONG Length;
178     USBD_STATUS Status;
179 } USBD_ISO_PACKET_DESCRIPTOR;
180 typedef struct _USBD_ISO_PACKET_DESCRIPTOR *PUSBD_ISO_PACKET_DESCRIPTOR;
181
182 struct _URB_HCD_AREA {
183     PVOID Reserved8[8];
184 };
185
186 struct _URB_HEADER {
187     USHORT Length;
188     USHORT Function;
189     USBD_STATUS Status;
190     PVOID UsbdDeviceHandle;
191     ULONG UsbdFlags;
192 };
193
194 struct _URB_SELECT_INTERFACE {
195     struct _URB_HEADER Hdr;
196     USBD_CONFIGURATION_HANDLE ConfigurationHandle;
197     USBD_INTERFACE_INFORMATION Interface;
198 };
199
200 struct _URB_SELECT_CONFIGURATION {
201     struct _URB_HEADER Hdr;
202     PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
203     USBD_CONFIGURATION_HANDLE ConfigurationHandle;
204     USBD_INTERFACE_INFORMATION Interface;
205 };
206
207 struct _URB_PIPE_REQUEST {
208     struct _URB_HEADER Hdr;
209     USBD_PIPE_HANDLE PipeHandle;
210     ULONG Reserved;
211 };
212
213 struct _URB_FRAME_LENGTH_CONTROL {
214     struct _URB_HEADER Hdr;
215 };
216
217 struct _URB_GET_FRAME_LENGTH {
218     struct _URB_HEADER Hdr;
219     ULONG FrameLength;
220     ULONG FrameNumber;
221 };
222
223 struct _URB_SET_FRAME_LENGTH {
224     struct _URB_HEADER Hdr;
225     LONG FrameLengthDelta;
226 };
227
228 struct _URB_GET_CURRENT_FRAME_NUMBER {
229     struct _URB_HEADER Hdr;
230     ULONG FrameNumber;
231 };
232
233 struct _URB_CONTROL_TRANSFER {
234     struct _URB_HEADER Hdr;
235     USBD_PIPE_HANDLE PipeHandle;
236     ULONG TransferFlags;
237     ULONG TransferBufferLength;
238     PVOID TransferBuffer;
239     PMDL TransferBufferMDL;
240     struct _URB *UrbLink;
241     struct _URB_HCD_AREA hca;
242     UCHAR SetupPacket[8];
243 };
244
245 struct _URB_BULK_OR_INTERRUPT_TRANSFER {
246     struct _URB_HEADER Hdr;
247     USBD_PIPE_HANDLE PipeHandle;
248     ULONG TransferFlags;
249     ULONG TransferBufferLength;
250     PVOID TransferBuffer;
251     PMDL TransferBufferMDL;
252     struct _URB *UrbLink;
253     struct _URB_HCD_AREA hca;
254 };
255
256 struct _URB_ISOCH_TRANSFER {
257     struct _URB_HEADER Hdr;
258     USBD_PIPE_HANDLE PipeHandle;
259     ULONG TransferFlags;
260     ULONG TransferBufferLength;
261     PVOID TransferBuffer;
262     PMDL TransferBufferMDL;
263     struct _URB *UrbLink;
264     struct _URB_HCD_AREA hca;
265     ULONG StartFrame;
266     ULONG NumberOfPackets;
267     ULONG ErrorCount;
268     USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
269 };
270
271 struct _URB_CONTROL_DESCRIPTOR_REQUEST {
272     struct _URB_HEADER Hdr;
273     PVOID Reserved;
274     ULONG Reserved0;
275     ULONG TransferBufferLength;
276     PVOID TransferBuffer;
277     PMDL TransferBufferMDL;
278     struct _URB *UrbLink;
279     struct _URB_HCD_AREA hca;
280     USHORT Reserved1;
281     UCHAR Index;
282     UCHAR DescriptorType;
283     USHORT LanguageId;
284     USHORT Reserved2;
285 };
286
287 struct _URB_CONTROL_GET_STATUS_REQUEST {
288     struct _URB_HEADER Hdr;
289     PVOID Reserved;
290     ULONG Reserved0;
291     ULONG TransferBufferLength;
292     PVOID TransferBuffer;
293     PMDL TransferBufferMDL;
294     struct _URB *UrbLink;
295     struct _URB_HCD_AREA hca;
296     UCHAR Reserved1[4];
297     USHORT Index;
298     USHORT Reserved2;
299 };
300
301 struct _URB_CONTROL_FEATURE_REQUEST {
302     struct _URB_HEADER Hdr;
303     PVOID Reserved;
304     ULONG Reserved2;
305     ULONG Reserved3;
306     PVOID Reserved4;
307     PMDL Reserved5;
308     struct _URB *UrbLink;
309     struct _URB_HCD_AREA hca;
310     USHORT Reserved0;
311     USHORT FeatureSelector;
312     USHORT Index;
313     USHORT Reserved1;
314 };
315
316 struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
317     struct _URB_HEADER Hdr;
318     PVOID Reserved;
319     ULONG TransferFlags;
320     ULONG TransferBufferLength;
321     PVOID TransferBuffer;
322     PMDL TransferBufferMDL;
323     struct _URB *UrbLink;
324     struct _URB_HCD_AREA hca;
325     UCHAR RequestTypeReservedBits;
326     UCHAR Request;
327     USHORT Value;
328     USHORT Index;
329     USHORT Reserved1;
330 };
331
332 struct _URB_CONTROL_GET_INTERFACE_REQUEST {
333     struct _URB_HEADER Hdr;
334     PVOID Reserved;
335     ULONG Reserved0;
336     ULONG TransferBufferLength;
337     PVOID TransferBuffer;
338     PMDL TransferBufferMDL;
339     struct _URB *UrbLink;
340     struct _URB_HCD_AREA hca;
341     UCHAR Reserved1[4];
342     USHORT Interface;
343     USHORT Reserved2;
344 };
345
346 struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
347     struct _URB_HEADER Hdr;
348     PVOID Reserved;
349     ULONG Reserved0;
350     ULONG TransferBufferLength;
351     PVOID TransferBuffer;
352     PMDL TransferBufferMDL;
353     struct _URB *UrbLink;
354     struct _URB_HCD_AREA hca;
355     UCHAR Reserved1[8];
356 };
357
358 struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST {
359     struct _URB_HEADER Hdr;
360     PVOID Reserved;
361     ULONG Reserved0;
362     ULONG TransferBufferLength;
363     PVOID TransferBuffer;
364     PMDL TransferBufferMDL;
365     struct _URB *UrbLink;
366     struct _URB_HCD_AREA hca;
367     UCHAR   Recipient:5;
368     UCHAR   Reserved1:3;
369     UCHAR   Reserved2;
370     UCHAR   InterfaceNumber;
371     UCHAR   MS_PageIndex;
372     USHORT  MS_FeatureDescriptorIndex;
373     USHORT  Reserved3;
374 };
375
376 typedef struct _URB {
377     union {
378         struct _URB_HEADER UrbHeader;
379         struct _URB_SELECT_INTERFACE UrbSelectInterface;
380         struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
381         struct _URB_PIPE_REQUEST UrbPipeRequest;
382         struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
383         struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
384         struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
385         struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
386         struct _URB_CONTROL_TRANSFER UrbControlTransfer;
387         struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
388         struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
389         struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
390         struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
391         struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
392         struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
393         struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
394         struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
395         struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest;
396     } DUMMYUNIONNAME;
397 } URB;
398 typedef struct _URB *PURB;
399
400 #endif