1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.
Module Name:
public.h
Abstract:
Environment:
User & Kernel mode
--*/
#ifndef _PUBLIC_H
#define _PUBLIC_H
#include <initguid.h>
// {573E8C73-0CB4-4471-A1BF-FAB26C31D384}
DEFINE_GUID(GUID_DEVINTERFACE_OSRUSBFX2,
0x573e8c73, 0xcb4, 0x4471, 0xa1, 0xbf, 0xfa, 0xb2, 0x6c, 0x31, 0xd3, 0x84);
#pragma warning(push)
#pragma warning(disable:4201) // nameless struct/union
#pragma warning(disable:4214) // bit field types other than int
//
// Define the structures that will be used by the IOCTL
// interface to the driver
//
//
// BAR_GRAPH_STATE
//
// BAR_GRAPH_STATE is a bit field structure with each
// bit corresponding to one of the bar graph on the
// OSRFX2 Development Board
//
#include <pshpack1.h>
typedef struct _BAR_GRAPH_STATE {
union {
struct {
//
// Individual bars starting from the
// top of the stack of bars
//
// NOTE: There are actually 10 bars,
// but the very top two do not light
// and are not counted here
//
UCHAR Bar1 : 1;
UCHAR Bar2 : 1;
UCHAR Bar3 : 1;
UCHAR Bar4 : 1;
UCHAR Bar5 : 1;
UCHAR Bar6 : 1;
UCHAR Bar7 : 1;
UCHAR Bar8 : 1;
};
//
// The state of all the bar graph as a single
// UCHAR
//
UCHAR BarsAsUChar;
};
}BAR_GRAPH_STATE, *PBAR_GRAPH_STATE;
//
// SWITCH_STATE
//
// SWITCH_STATE is a bit field structure with each
// bit corresponding to one of the switches on the
// OSRFX2 Development Board
//
typedef struct _SWITCH_STATE {
union {
struct {
//
// Individual switches starting from the
// left of the set of switches
//
UCHAR Switch1 : 1;
UCHAR Switch2 : 1;
UCHAR Switch3 : 1;
UCHAR Switch4 : 1;
UCHAR Switch5 : 1;
UCHAR Switch6 : 1;
UCHAR Switch7 : 1;
UCHAR Switch8 : 1;
};
//
// The state of all the switches as a single
// UCHAR
//
UCHAR SwitchesAsUChar;
};
}SWITCH_STATE, *PSWITCH_STATE;
#include <poppack.h>
#pragma warning(pop)
#define IOCTL_INDEX 0x800
#define FILE_DEVICE_OSRUSBFX2 65500U
#define IOCTL_OSRUSBFX2_GET_CONFIG_DESCRIPTOR CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX, \
METHOD_BUFFERED, \
FILE_READ_ACCESS)
#define IOCTL_OSRUSBFX2_RESET_DEVICE CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX + 1, \
METHOD_BUFFERED, \
FILE_WRITE_ACCESS)
#define IOCTL_OSRUSBFX2_REENUMERATE_DEVICE CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX + 3, \
METHOD_BUFFERED, \
FILE_WRITE_ACCESS)
#define IOCTL_OSRUSBFX2_GET_BAR_GRAPH_DISPLAY CTL_CODE(FILE_DEVICE_OSRUSBFX2,\
IOCTL_INDEX + 4, \
METHOD_BUFFERED, \
FILE_READ_ACCESS)
#define IOCTL_OSRUSBFX2_SET_BAR_GRAPH_DISPLAY CTL_CODE(FILE_DEVICE_OSRUSBFX2,\
IOCTL_INDEX + 5, \
METHOD_BUFFERED, \
FILE_WRITE_ACCESS)
#define IOCTL_OSRUSBFX2_READ_SWITCHES CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX + 6, \
METHOD_BUFFERED, \
FILE_READ_ACCESS)
#define IOCTL_OSRUSBFX2_GET_7_SEGMENT_DISPLAY CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX + 7, \
METHOD_BUFFERED, \
FILE_READ_ACCESS)
#define IOCTL_OSRUSBFX2_SET_7_SEGMENT_DISPLAY CTL_CODE(FILE_DEVICE_OSRUSBFX2, \
IOCTL_INDEX + 8, \
METHOD_BUFFERED, \
FILE_WRITE_ACCESS)
#define IOCTL_OSRUSBFX2_GET_INTERRUPT_MESSAGE CTL_CODE(FILE_DEVICE_OSRUSBFX2,\
IOCTL_INDEX + 9, \
METHOD_OUT_DIRECT, \
FILE_READ_ACCESS)
#endif
|