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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
wusb.h
Abstract:
Public interface to winusb.dll
Environment:
Kernel Mode Only
Notes:
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.
Copyright (c) 2001 Microsoft Corporation. All Rights Reserved.
Revision History:
11/19/2002 : created
Authors:
--*/
#ifndef __WUSB_H__
#define __WUSB_H__
#ifdef __cplusplus
extern "C" {
#endif
#if(NTDDI_VERSION >= NTDDI_WINXP)
#include "winusbio.h"
typedef PVOID WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE;
#pragma pack(1)
typedef struct _WINUSB_SETUP_PACKET {
UCHAR RequestType;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Length;
} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET;
#pragma pack()
BOOL __stdcall
WinUsb_Initialize(
__in HANDLE DeviceHandle,
__out PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
BOOL __stdcall
WinUsb_Free(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle
);
BOOL __stdcall
WinUsb_GetAssociatedInterface(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AssociatedInterfaceIndex,
__out PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle
);
BOOL __stdcall
WinUsb_GetDescriptor(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR DescriptorType,
__in UCHAR Index,
__in USHORT LanguageID,
__out_bcount_part_opt(BufferLength, *LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out PULONG LengthTransferred
);
BOOL __stdcall
WinUsb_QueryInterfaceSettings(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AlternateInterfaceNumber,
__out PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor
);
BOOL __stdcall
WinUsb_QueryDeviceInformation(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG InformationType,
__inout PULONG BufferLength,
__out_bcount(*BufferLength) PVOID Buffer
);
BOOL __stdcall
WinUsb_SetCurrentAlternateSetting(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR SettingNumber
);
BOOL __stdcall
WinUsb_GetCurrentAlternateSetting(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__out PUCHAR SettingNumber
);
BOOL __stdcall
WinUsb_QueryPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR AlternateInterfaceNumber,
__in UCHAR PipeIndex,
__out PWINUSB_PIPE_INFORMATION PipeInformation
);
BOOL __stdcall
WinUsb_SetPipePolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in ULONG PolicyType,
__in ULONG ValueLength,
__in_bcount(ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetPipePolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in ULONG PolicyType,
__inout PULONG ValueLength,
__out_bcount(*ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_ReadPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__out_bcount_part_opt(BufferLength,*LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_WritePipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID,
__in_bcount(BufferLength) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_ControlTransfer(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in WINUSB_SETUP_PACKET SetupPacket,
__out_bcount_part_opt(BufferLength, *LengthTransferred) PUCHAR Buffer,
__in ULONG BufferLength,
__out_opt PULONG LengthTransferred,
__in_opt LPOVERLAPPED Overlapped
);
BOOL __stdcall
WinUsb_ResetPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_AbortPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_FlushPipe(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in UCHAR PipeID
);
BOOL __stdcall
WinUsb_SetPowerPolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG PolicyType,
__in ULONG ValueLength,
__in_bcount(ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetPowerPolicy(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in ULONG PolicyType,
__inout PULONG ValueLength,
__out_bcount(*ValueLength) PVOID Value
);
BOOL __stdcall
WinUsb_GetOverlappedResult(
__in WINUSB_INTERFACE_HANDLE InterfaceHandle,
__in LPOVERLAPPED lpOverlapped,
__out LPDWORD lpNumberOfBytesTransferred,
__in BOOL bWait
);
PUSB_INTERFACE_DESCRIPTOR __stdcall
WinUsb_ParseConfigurationDescriptor(
__in PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
__in PVOID StartPosition,
__in LONG InterfaceNumber,
__in LONG AlternateSetting,
__in LONG InterfaceClass,
__in LONG InterfaceSubClass,
__in LONG InterfaceProtocol
);
PUSB_COMMON_DESCRIPTOR __stdcall
WinUsb_ParseDescriptors(
__in_bcount(TotalLength) PVOID DescriptorBuffer,
__in ULONG TotalLength,
__in PVOID StartPosition,
__in LONG DescriptorType
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
#ifdef __cplusplus
}
#endif
#endif //__WUSB_H__
|