~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/include/ddk/usb.h

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  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
401 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.