1 | /*
|
---|
2 | * usbscan.h
|
---|
3 | *
|
---|
4 | * This file is part of the mingw-w64 runtime package.
|
---|
5 | * No warranty is given; refer to the file DISCLAIMER within this package.
|
---|
6 | */
|
---|
7 |
|
---|
8 | #ifndef _USBSCAN_H_
|
---|
9 | #define _USBSCAN_H_
|
---|
10 |
|
---|
11 | #include <winapifamily.h>
|
---|
12 |
|
---|
13 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
|
---|
14 |
|
---|
15 | #ifndef MAX_NUM_PIPES
|
---|
16 | #define MAX_NUM_PIPES 8
|
---|
17 | #endif
|
---|
18 |
|
---|
19 | #define BULKIN_FLAG 0x80
|
---|
20 |
|
---|
21 | #pragma pack(push, 8)
|
---|
22 | typedef struct _DRV_VERSION {
|
---|
23 | unsigned major;
|
---|
24 | unsigned minor;
|
---|
25 | unsigned internal;
|
---|
26 | } DRV_VERSION,*PDRV_VERSION;
|
---|
27 |
|
---|
28 | typedef struct _IO_BLOCK {
|
---|
29 | unsigned uOffset;
|
---|
30 | unsigned uLength;
|
---|
31 | PUCHAR pbyData;
|
---|
32 | unsigned uIndex;
|
---|
33 | } IO_BLOCK,*PIO_BLOCK;
|
---|
34 |
|
---|
35 | typedef struct _IO_BLOCK_EX {
|
---|
36 | unsigned uOffset;
|
---|
37 | unsigned uLength;
|
---|
38 | PUCHAR pbyData;
|
---|
39 | unsigned uIndex;
|
---|
40 | UCHAR bRequest;
|
---|
41 | UCHAR bmRequestType;
|
---|
42 | UCHAR fTransferDirectionIn;
|
---|
43 | } IO_BLOCK_EX,*PIO_BLOCK_EX;
|
---|
44 |
|
---|
45 | typedef struct _CHANNEL_INFO {
|
---|
46 | unsigned EventChannelSize;
|
---|
47 | unsigned uReadDataAlignment;
|
---|
48 | unsigned uWriteDataAlignment;
|
---|
49 | } CHANNEL_INFO,*PCHANNEL_INFO;
|
---|
50 |
|
---|
51 | typedef enum {
|
---|
52 | EVENT_PIPE,
|
---|
53 | READ_DATA_PIPE,
|
---|
54 | WRITE_DATA_PIPE,
|
---|
55 | ALL_PIPE
|
---|
56 | } PIPE_TYPE;
|
---|
57 |
|
---|
58 | typedef struct _USBSCAN_GET_DESCRIPTOR {
|
---|
59 | UCHAR DescriptorType;
|
---|
60 | UCHAR Index;
|
---|
61 | USHORT LanguageId;
|
---|
62 | } USBSCAN_GET_DESCRIPTOR,*PUSBSCAN_GET_DESCRIPTOR;
|
---|
63 |
|
---|
64 | typedef struct _DEVICE_DESCRIPTOR {
|
---|
65 | USHORT usVendorId;
|
---|
66 | USHORT usProductId;
|
---|
67 | USHORT usBcdDevice;
|
---|
68 | USHORT usLanguageId;
|
---|
69 | } DEVICE_DESCRIPTOR,*PDEVICE_DESCRIPTOR;
|
---|
70 |
|
---|
71 | typedef enum _RAW_PIPE_TYPE {
|
---|
72 | USBSCAN_PIPE_CONTROL,
|
---|
73 | USBSCAN_PIPE_ISOCHRONOUS,
|
---|
74 | USBSCAN_PIPE_BULK,
|
---|
75 | USBSCAN_PIPE_INTERRUPT
|
---|
76 | } RAW_PIPE_TYPE;
|
---|
77 |
|
---|
78 | typedef struct _USBSCAN_PIPE_INFORMATION {
|
---|
79 | USHORT MaximumPacketSize;
|
---|
80 | UCHAR EndpointAddress;
|
---|
81 | UCHAR Interval;
|
---|
82 | RAW_PIPE_TYPE PipeType;
|
---|
83 | } USBSCAN_PIPE_INFORMATION,*PUSBSCAN_PIPE_INFORMATION;
|
---|
84 |
|
---|
85 | typedef struct _USBSCAN_PIPE_CONFIGURATION {
|
---|
86 | ULONG NumberOfPipes;
|
---|
87 | USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES];
|
---|
88 | } USBSCAN_PIPE_CONFIGURATION,*PUSBSCAN_PIPE_CONFIGURATION;
|
---|
89 |
|
---|
90 | typedef struct _USBSCAN_TIMEOUT {
|
---|
91 | ULONG TimeoutRead;
|
---|
92 | ULONG TimeoutWrite;
|
---|
93 | ULONG TimeoutEvent;
|
---|
94 | } USBSCAN_TIMEOUT,*PUSBSCAN_TIMEOUT;
|
---|
95 | #pragma pack(pop)
|
---|
96 |
|
---|
97 | #define FILE_DEVICE_USB_SCAN 0x8000
|
---|
98 | #define IOCTL_INDEX 0x0800
|
---|
99 | #define ALL ALL_PIPE
|
---|
100 | #define IOCTL_ABORT_PIPE IOCTL_CANCEL_IO
|
---|
101 |
|
---|
102 | #define IOCTL_GET_VERSION CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
103 | #define IOCTL_CANCEL_IO CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
104 | #define IOCTL_WAIT_ON_DEVICE_EVENT CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
105 | #define IOCTL_READ_REGISTERS CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+3, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
106 | #define IOCTL_WRITE_REGISTERS CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
107 | #define IOCTL_GET_CHANNEL_ALIGN_RQST CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+5, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
108 | #define IOCTL_GET_DEVICE_DESCRIPTOR CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+6, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
109 | #define IOCTL_RESET_PIPE CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+7, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
110 | #define IOCTL_GET_USB_DESCRIPTOR CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+8, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
111 | #define IOCTL_SEND_USB_REQUEST CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+9, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
112 | #define IOCTL_GET_PIPE_CONFIGURATION CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+10, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
113 | #define IOCTL_SET_TIMEOUT CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+11, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
114 |
|
---|
115 | #endif
|
---|
116 |
|
---|
117 | #endif
|
---|