]> git.proxmox.com Git - rustc.git/blame - vendor/winapi/src/um/winusb.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / um / winusb.rs
CommitLineData
ff7c6d11
XL
1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! FFI bindings to winusb.
7use shared::minwindef::{BOOL, LPDWORD, PUCHAR, PULONG, UCHAR, ULONG, USHORT};
8use shared::usb::PUSBD_ISO_PACKET_DESCRIPTOR;
9use shared::usbspec::PUSB_CONFIGURATION_DESCRIPTOR;
10use shared::winusbio::{PWINUSB_PIPE_INFORMATION, PWINUSB_PIPE_INFORMATION_EX};
11use um::minwinbase::LPOVERLAPPED;
12use um::winnt::{HANDLE, LARGE_INTEGER, LONG, PVOID};
13pub type WINUSB_INTERFACE_HANDLE = PVOID;
14pub type PWINUSB_INTERFACE_HANDLE = *mut PVOID;
15pub type WINUSB_ISOCH_BUFFER_HANDLE = PVOID;
16pub type PWINUSB_ISOCH_BUFFER_HANDLE = *mut PVOID;
17STRUCT!{#[repr(packed)] struct WINUSB_SETUP_PACKET {
18 RequestType: UCHAR,
19 Request: UCHAR,
20 Value: USHORT,
21 Index: USHORT,
22 Length: USHORT,
23}}
24pub type PWINUSB_SETUP_PACKET = *mut WINUSB_SETUP_PACKET;
25extern "system" {
26 pub fn WinUsb_Initialize(
27 DeviceHandle: HANDLE,
28 InterfaceHandle: PWINUSB_INTERFACE_HANDLE,
29 ) -> BOOL;
30 pub fn WinUsb_Free(
31 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
32 ) -> BOOL;
33 pub fn WinUsb_GetAssociatedInterface(
34 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
35 AssociatedInterfaceIndex: UCHAR,
36 AssociatedInterfaceHandle: PWINUSB_INTERFACE_HANDLE,
37 ) -> BOOL;
38 pub fn WinUsb_GetDescriptor(
39 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
40 DescriptorType: UCHAR,
41 Index: UCHAR,
42 LanguageID: USHORT,
43 Buffer: PUCHAR,
44 BufferLength: ULONG,
45 LengthTransferred: PULONG,
46 ) -> BOOL;
47 pub fn WinUsb_QueryInterfaceSettings(
48 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
49 AlternateInterfaceNumber: UCHAR,
50 UsbAltInterfaceDescriptor: PUSB_INTERFACE_DESCRIPTOR,
51 ) -> BOOL;
52 pub fn WinUsb_QueryDeviceInformation(
53 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
54 InformationType: ULONG,
55 BufferLength: PULONG,
56 Buffer: PVOID,
57 ) -> BOOL;
58 pub fn WinUsb_SetCurrentAlternateSetting(
59 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
60 SettingNumber: UCHAR,
61 ) -> BOOL;
62 pub fn WinUsb_GetCurrentAlternateSetting(
63 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
64 SettingNumber: PUCHAR,
65 ) -> BOOL;
66 pub fn WinUsb_QueryPipe(
67 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
68 AlternateInterfaceNumber: UCHAR,
69 PipeIndex: UCHAR,
70 PipeInformationEx: PWINUSB_PIPE_INFORMATION,
71 ) -> BOOL;
72 pub fn WinUsb_QueryPipeEx(
73 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
74 AlternateInterfaceNumber: UCHAR,
75 PipeIndex: UCHAR,
76 PipeInformationEx: PWINUSB_PIPE_INFORMATION_EX,
77 ) -> BOOL;
78 pub fn WinUsb_SetPipePolicy(
79 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
80 PipeID: UCHAR,
81 PolicyType: ULONG,
82 ValueLength: ULONG,
83 Value: PVOID,
84 ) -> BOOL;
85 pub fn WinUsb_GetPipePolicy(
86 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
87 PipeID: UCHAR,
88 PolicyType: ULONG,
89 ValueLength: PULONG,
90 Value: PVOID,
91 ) -> BOOL;
92 pub fn WinUsb_ReadPipe(
93 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
94 PipeID: UCHAR,
95 Buffer: PUCHAR,
96 BufferLength: ULONG,
97 LengthTransferred: PULONG,
98 Overlapped: LPOVERLAPPED,
99 ) -> BOOL;
100 pub fn WinUsb_WritePipe(
101 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
102 PipeID: UCHAR,
103 Buffer: PUCHAR,
104 BufferLength: ULONG,
105 LengthTransferred: PULONG,
106 Overlapped: LPOVERLAPPED,
107 ) -> BOOL;
108 pub fn WinUsb_ControlTransfer(
109 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
110 SetupPacket: WINUSB_SETUP_PACKET,
111 Buffer: PUCHAR,
112 BufferLength: ULONG,
113 LengthTransferred: PULONG,
114 Overlapped: LPOVERLAPPED,
115 ) -> BOOL;
116 pub fn WinUsb_ResetPipe(
117 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
118 PipeID: UCHAR,
119 ) -> BOOL;
120 pub fn WinUsb_AbortPipe(
121 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
122 PipeID: UCHAR,
123 ) -> BOOL;
124 pub fn WinUsb_FlushPipe(
125 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
126 PipeID: UCHAR,
127 ) -> BOOL;
128 pub fn WinUsb_SetPowerPolicy(
129 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
130 PolicyType: ULONG,
131 ValueLength: ULONG,
132 Value: PVOID,
133 ) -> BOOL;
134 pub fn WinUsb_GetPowerPolicy(
135 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
136 PolicyType: ULONG,
137 ValueLength: PULONG,
138 Value: PVOID,
139 ) -> BOOL;
140 pub fn WinUsb_GetOverlappedResult(
141 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
142 lpOverlapped: LPOVERLAPPED,
143 lpNumberOfBytesTransferred: LPDWORD,
144 bWait: BOOL,
145 ) -> BOOL;
146 pub fn WinUsb_ParseConfigurationDescriptor(
147 ConfigurationDescriptor: PUSB_CONFIGURATION_DESCRIPTOR,
148 StartPosition: PVOID,
149 InterfaceNumber: LONG,
150 AlternateSetting: LONG,
151 InterfaceClass: LONG,
152 InterfaceSubClass: LONG,
153 InterfaceProtocol: LONG,
154 ) -> BOOL;
155 pub fn WinUsb_ParseDescriptors(
156 DescriptorBuffer: PVOID,
157 TotalLength: ULONG,
158 StartPosition: PVOID,
159 DescriptorType: LONG,
160 ) -> BOOL;
161 pub fn WinUsb_GetCurrentFrameNumber(
162 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
163 CurrentFrameNumber: PULONG,
164 TimeStamp: *mut LARGE_INTEGER,
165 ) -> BOOL;
166 pub fn WinUsb_GetAdjustedFrameNumber(
167 CurrentFrameNumber: PULONG,
168 TimeStamp: LARGE_INTEGER,
169 ) -> BOOL;
170 pub fn WinUsb_RegisterIsochBuffer(
171 InterfaceHandle: WINUSB_INTERFACE_HANDLE,
172 PipeID: UCHAR,
173 Buffer: PUCHAR,
174 BufferLength: ULONG,
175 IsochBufferHandle: PWINUSB_ISOCH_BUFFER_HANDLE,
176 ) -> BOOL;
177 pub fn WinUsb_UnregisterIsochBuffer(
178 IsochBufferHandle: WINUSB_ISOCH_BUFFER_HANDLE,
179 ) -> BOOL;
180 pub fn WinUsb_WriteIsochPipe(
181 BufferHandle: WINUSB_ISOCH_BUFFER_HANDLE,
182 Offset: ULONG,
183 Length: ULONG,
184 FrameNumber: PULONG,
185 Overlapped: LPOVERLAPPED,
186 ) -> BOOL;
187 pub fn WinUsb_ReadIsochPipe(
188 BufferHandle: WINUSB_ISOCH_BUFFER_HANDLE,
189 Offset: ULONG,
190 Length: ULONG,
191 FrameNumber: PULONG,
192 NumberOfPackets: ULONG,
193 IsoPacketDescriptors: PUSBD_ISO_PACKET_DESCRIPTOR,
194 Overlapped: LPOVERLAPPED,
195 ) -> BOOL;
196 pub fn WinUsb_WriteIsochPipeAsap(
197 BufferHandle: WINUSB_ISOCH_BUFFER_HANDLE,
198 Offset: ULONG,
199 Length: ULONG,
200 ContinueStream: BOOL,
201 Overlapped: LPOVERLAPPED,
202 ) -> BOOL;
203 pub fn WinUsb_ReadIsochPipeAsap(
204 BufferHandle: WINUSB_ISOCH_BUFFER_HANDLE,
205 Offset: ULONG,
206 Length: ULONG,
207 ContinueStream: BOOL,
208 NumberOfPackets: ULONG,
209 IsoPacketDescriptors: PUSBD_ISO_PACKET_DESCRIPTOR,
210 Overlapped: LPOVERLAPPED,
211 ) -> BOOL;
212}
ff7c6d11
XL
213STRUCT!{struct USB_INTERFACE_DESCRIPTOR {
214 bLength: UCHAR,
215 bDescriptorType: UCHAR,
216 bInterfaceNumber: UCHAR,
217 bAlternateSetting: UCHAR,
218 bNumEndpoints: UCHAR,
219 bInterfaceClass: UCHAR,
220 bInterfaceSubClass: UCHAR,
221 bInterfaceProtocol: UCHAR,
222 iInterface: UCHAR,
223}}
224pub type PUSB_INTERFACE_DESCRIPTOR = *mut USB_INTERFACE_DESCRIPTOR;