1#[repr(C)]
4#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub struct __BindgenBitfieldUnit<Storage> {
6 storage: Storage,
7}
8impl<Storage> __BindgenBitfieldUnit<Storage> {
9 #[inline]
10 pub const fn new(storage: Storage) -> Self {
11 Self { storage }
12 }
13}
14impl<Storage> __BindgenBitfieldUnit<Storage>
15where
16 Storage: AsRef<[u8]> + AsMut<[u8]>,
17{
18 #[inline]
19 pub fn get_bit(&self, index: usize) -> bool {
20 debug_assert!(index / 8 < self.storage.as_ref().len());
21 let byte_index = index / 8;
22 let byte = self.storage.as_ref()[byte_index];
23 let bit_index = if cfg!(target_endian = "big") {
24 7 - (index % 8)
25 } else {
26 index % 8
27 };
28 let mask = 1 << bit_index;
29 byte & mask == mask
30 }
31 #[inline]
32 pub fn set_bit(&mut self, index: usize, val: bool) {
33 debug_assert!(index / 8 < self.storage.as_ref().len());
34 let byte_index = index / 8;
35 let byte = &mut self.storage.as_mut()[byte_index];
36 let bit_index = if cfg!(target_endian = "big") {
37 7 - (index % 8)
38 } else {
39 index % 8
40 };
41 let mask = 1 << bit_index;
42 if val {
43 *byte |= mask;
44 } else {
45 *byte &= !mask;
46 }
47 }
48 #[inline]
49 pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
50 debug_assert!(bit_width <= 64);
51 debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
52 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
53 let mut val = 0;
54 for i in 0..(bit_width as usize) {
55 if self.get_bit(i + bit_offset) {
56 let index = if cfg!(target_endian = "big") {
57 bit_width as usize - 1 - i
58 } else {
59 i
60 };
61 val |= 1 << index;
62 }
63 }
64 val
65 }
66 #[inline]
67 pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
68 debug_assert!(bit_width <= 64);
69 debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
70 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
71 for i in 0..(bit_width as usize) {
72 let mask = 1 << i;
73 let val_bit_is_set = val & mask == mask;
74 let index = if cfg!(target_endian = "big") {
75 bit_width as usize - 1 - i
76 } else {
77 i
78 };
79 self.set_bit(index + bit_offset, val_bit_is_set);
80 }
81 }
82}
83#[repr(C)]
84#[derive(Default)]
85pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
86impl<T> __IncompleteArrayField<T> {
87 #[inline]
88 pub const fn new() -> Self {
89 __IncompleteArrayField(::std::marker::PhantomData, [])
90 }
91 #[inline]
92 pub fn as_ptr(&self) -> *const T {
93 self as *const _ as *const T
94 }
95 #[inline]
96 pub fn as_mut_ptr(&mut self) -> *mut T {
97 self as *mut _ as *mut T
98 }
99 #[inline]
100 pub unsafe fn as_slice(&self, len: usize) -> &[T] {
101 ::std::slice::from_raw_parts(self.as_ptr(), len)
102 }
103 #[inline]
104 pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
105 ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
106 }
107}
108impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
109 fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
110 fmt.write_str("__IncompleteArrayField")
111 }
112}
113pub type ULONG = ::std::os::raw::c_ulong;
114pub type USHORT = ::std::os::raw::c_ushort;
115pub type UCHAR = ::std::os::raw::c_uchar;
116pub type PUCHAR = *mut UCHAR;
117pub type DWORD = ::std::os::raw::c_ulong;
118pub type BOOL = ::std::os::raw::c_int;
119pub type PINT = *mut ::std::os::raw::c_int;
120pub type INT = ::std::os::raw::c_int;
121pub type UINT = ::std::os::raw::c_uint;
122pub type PUINT = *mut ::std::os::raw::c_uint;
123pub type INT_PTR = ::std::os::raw::c_longlong;
124pub type ULONG_PTR = ::std::os::raw::c_ulonglong;
125pub type PVOID = *mut ::std::os::raw::c_void;
126pub type CHAR = ::std::os::raw::c_char;
127pub type SHORT = ::std::os::raw::c_short;
128pub type HANDLE = *mut ::std::os::raw::c_void;
129#[repr(C)]
130#[derive(Debug, Default, Copy, Clone)]
131pub struct HWND__ {
132 pub unused: ::std::os::raw::c_int,
133}
134pub type HWND = *mut HWND__;
135#[repr(C)]
136#[derive(Copy, Clone)]
137pub struct _OVERLAPPED {
138 pub Internal: ULONG_PTR,
139 pub InternalHigh: ULONG_PTR,
140 pub __bindgen_anon_1: _OVERLAPPED__bindgen_ty_1,
141 pub hEvent: HANDLE,
142}
143#[repr(C)]
144#[derive(Copy, Clone)]
145pub union _OVERLAPPED__bindgen_ty_1 {
146 pub __bindgen_anon_1: _OVERLAPPED__bindgen_ty_1__bindgen_ty_1,
147 pub Pointer: PVOID,
148}
149#[repr(C)]
150#[derive(Debug, Default, Copy, Clone)]
151pub struct _OVERLAPPED__bindgen_ty_1__bindgen_ty_1 {
152 pub Offset: DWORD,
153 pub OffsetHigh: DWORD,
154}
155impl Default for _OVERLAPPED__bindgen_ty_1 {
156 fn default() -> Self {
157 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
158 unsafe {
159 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
160 s.assume_init()
161 }
162 }
163}
164impl Default for _OVERLAPPED {
165 fn default() -> Self {
166 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
167 unsafe {
168 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
169 s.assume_init()
170 }
171 }
172}
173pub type LPOVERLAPPED = *mut _OVERLAPPED;
174pub const _USBD_PIPE_TYPE_UsbdPipeTypeControl: _USBD_PIPE_TYPE = 0;
175pub const _USBD_PIPE_TYPE_UsbdPipeTypeIsochronous: _USBD_PIPE_TYPE = 1;
176pub const _USBD_PIPE_TYPE_UsbdPipeTypeBulk: _USBD_PIPE_TYPE = 2;
177pub const _USBD_PIPE_TYPE_UsbdPipeTypeInterrupt: _USBD_PIPE_TYPE = 3;
178pub type _USBD_PIPE_TYPE = ::std::os::raw::c_int;
179pub use self::_USBD_PIPE_TYPE as USBD_PIPE_TYPE;
180#[repr(C)]
181#[derive(Debug, Copy, Clone)]
182pub struct _WINUSB_PIPE_INFORMATION {
183 pub PipeType: USBD_PIPE_TYPE,
184 pub PipeId: UCHAR,
185 pub MaximumPacketSize: USHORT,
186 pub Interval: UCHAR,
187}
188impl Default for _WINUSB_PIPE_INFORMATION {
189 fn default() -> Self {
190 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
191 unsafe {
192 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
193 s.assume_init()
194 }
195 }
196}
197pub type WINUSB_PIPE_INFORMATION = _WINUSB_PIPE_INFORMATION;
198pub type PWINUSB_PIPE_INFORMATION = *mut WINUSB_PIPE_INFORMATION;
199#[repr(C)]
200#[derive(Debug, Copy, Clone)]
201pub struct _WINUSB_PIPE_INFORMATION_EX {
202 pub PipeType: USBD_PIPE_TYPE,
203 pub PipeId: UCHAR,
204 pub MaximumPacketSize: USHORT,
205 pub Interval: UCHAR,
206 pub MaximumBytesPerInterval: ULONG,
207}
208impl Default for _WINUSB_PIPE_INFORMATION_EX {
209 fn default() -> Self {
210 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
211 unsafe {
212 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
213 s.assume_init()
214 }
215 }
216}
217pub type WINUSB_PIPE_INFORMATION_EX = _WINUSB_PIPE_INFORMATION_EX;
218pub type PWINUSB_PIPE_INFORMATION_EX = *mut WINUSB_PIPE_INFORMATION_EX;
219#[repr(C, packed)]
220#[derive(Debug, Default, Copy, Clone)]
221pub struct _WINUSB_SETUP_PACKET {
222 pub RequestType: UCHAR,
223 pub Request: UCHAR,
224 pub Value: USHORT,
225 pub Index: USHORT,
226 pub Length: USHORT,
227}
228pub type WINUSB_SETUP_PACKET = _WINUSB_SETUP_PACKET;
229#[repr(C, packed)]
230#[derive(Debug, Default, Copy, Clone)]
231pub struct _KISO_PACKET {
232 pub Offset: UINT,
233 pub Length: USHORT,
234 pub Status: USHORT,
235}
236pub type KISO_PACKET = _KISO_PACKET;
237pub type PKISO_PACKET = *mut KISO_PACKET;
238pub const _KISO_FLAG_KISO_FLAG_NONE: _KISO_FLAG = 0;
239pub const _KISO_FLAG_KISO_FLAG_SET_START_FRAME: _KISO_FLAG = 1;
240pub type _KISO_FLAG = ::std::os::raw::c_int;
241pub use self::_KISO_FLAG as KISO_FLAG;
242#[repr(C, packed)]
243pub struct _KISO_CONTEXT {
244 pub Flags: KISO_FLAG,
245 pub StartFrame: UINT,
246 pub ErrorCount: SHORT,
247 pub NumberOfPackets: SHORT,
248 pub UrbHdrStatus: UINT,
249 pub IsoPackets: __IncompleteArrayField<KISO_PACKET>,
250}
251impl Default for _KISO_CONTEXT {
252 fn default() -> Self {
253 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
254 unsafe {
255 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
256 s.assume_init()
257 }
258 }
259}
260pub type KISO_CONTEXT = _KISO_CONTEXT;
261pub type PKISO_CONTEXT = *mut KISO_CONTEXT;
262#[repr(C, packed)]
263#[derive(Debug, Default, Copy, Clone)]
264pub struct _KISOCH_PACKET_INFORMATION {
265 pub PacketsPerFrame: UINT,
266 pub PollingPeriodMicroseconds: UINT,
267 pub BytesPerMillisecond: UINT,
268}
269pub type KISOCH_PACKET_INFORMATION = _KISOCH_PACKET_INFORMATION;
270pub type PKISOCH_PACKET_INFORMATION = *mut KISOCH_PACKET_INFORMATION;
271pub type KPROC = ::std::option::Option<unsafe extern "C" fn() -> INT_PTR>;
272pub type KLIB_USER_CONTEXT = INT_PTR;
273pub type KLIB_HANDLE = *mut ::std::os::raw::c_void;
274pub type KUSB_HANDLE = KLIB_HANDLE;
275pub type KLST_HANDLE = KLIB_HANDLE;
276pub type KHOT_HANDLE = KLIB_HANDLE;
277pub type KOVL_HANDLE = KLIB_HANDLE;
278pub type KOVL_POOL_HANDLE = KLIB_HANDLE;
279pub type KSTM_HANDLE = KLIB_HANDLE;
280pub type KISOCH_HANDLE = KLIB_HANDLE;
281pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_HOTK: _KLIB_HANDLE_TYPE = 0;
282pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_USBK: _KLIB_HANDLE_TYPE = 1;
283pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_USBSHAREDK: _KLIB_HANDLE_TYPE = 2;
284pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_LSTK: _KLIB_HANDLE_TYPE = 3;
285pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_LSTINFOK: _KLIB_HANDLE_TYPE = 4;
286pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_OVLK: _KLIB_HANDLE_TYPE = 5;
287pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_OVLPOOLK: _KLIB_HANDLE_TYPE = 6;
288pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_STMK: _KLIB_HANDLE_TYPE = 7;
289pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_ISOCHK: _KLIB_HANDLE_TYPE = 8;
290pub const _KLIB_HANDLE_TYPE_KLIB_HANDLE_TYPE_COUNT: _KLIB_HANDLE_TYPE = 9;
291pub type _KLIB_HANDLE_TYPE = ::std::os::raw::c_int;
292pub use self::_KLIB_HANDLE_TYPE as KLIB_HANDLE_TYPE;
293#[repr(C)]
294#[derive(Debug, Default, Copy, Clone)]
295pub struct _KLIB_VERSION {
296 pub Major: INT,
297 pub Minor: INT,
298 pub Micro: INT,
299 pub Nano: INT,
300}
301pub type KLIB_VERSION = _KLIB_VERSION;
302pub type PKLIB_VERSION = *mut KLIB_VERSION;
303pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_NONE: _KLST_SYNC_FLAG = 0;
304pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_UNCHANGED: _KLST_SYNC_FLAG = 1;
305pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_ADDED: _KLST_SYNC_FLAG = 2;
306pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_REMOVED: _KLST_SYNC_FLAG = 4;
307pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_CONNECT_CHANGE: _KLST_SYNC_FLAG = 8;
308pub const _KLST_SYNC_FLAG_KLST_SYNC_FLAG_MASK: _KLST_SYNC_FLAG = 15;
309pub type _KLST_SYNC_FLAG = ::std::os::raw::c_int;
310pub use self::_KLST_SYNC_FLAG as KLST_SYNC_FLAG;
311#[repr(C)]
312#[derive(Debug, Copy, Clone)]
313pub struct _KLST_DEV_COMMON_INFO {
314 pub Vid: INT,
315 pub Pid: INT,
316 pub MI: INT,
317 pub InstanceID: [CHAR; 256usize],
318}
319impl Default for _KLST_DEV_COMMON_INFO {
320 fn default() -> Self {
321 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
322 unsafe {
323 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
324 s.assume_init()
325 }
326 }
327}
328pub type KLST_DEV_COMMON_INFO = _KLST_DEV_COMMON_INFO;
329#[repr(C)]
330#[derive(Debug, Copy, Clone)]
331pub struct _KLST_DEVINFO {
332 pub Common: KLST_DEV_COMMON_INFO,
333 pub DriverID: INT,
334 pub DeviceInterfaceGUID: [CHAR; 256usize],
335 pub DeviceID: [CHAR; 256usize],
336 pub ClassGUID: [CHAR; 256usize],
337 pub Mfg: [CHAR; 256usize],
338 pub DeviceDesc: [CHAR; 256usize],
339 pub Service: [CHAR; 256usize],
340 pub SymbolicLink: [CHAR; 256usize],
341 pub DevicePath: [CHAR; 256usize],
342 pub LUsb0FilterIndex: INT,
343 pub Connected: BOOL,
344 pub SyncFlags: KLST_SYNC_FLAG,
345 pub BusNumber: INT,
346 pub DeviceAddress: INT,
347 pub SerialNumber: [CHAR; 256usize],
348}
349impl Default for _KLST_DEVINFO {
350 fn default() -> Self {
351 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
352 unsafe {
353 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
354 s.assume_init()
355 }
356 }
357}
358pub type KLST_DEVINFO = _KLST_DEVINFO;
359pub type KLST_DEVINFO_HANDLE = *mut KLST_DEVINFO;
360pub const _KLST_FLAG_KLST_FLAG_NONE: _KLST_FLAG = 0;
361pub const _KLST_FLAG_KLST_FLAG_INCLUDE_RAWGUID: _KLST_FLAG = 1;
362pub const _KLST_FLAG_KLST_FLAG_INCLUDE_DISCONNECT: _KLST_FLAG = 2;
363pub type _KLST_FLAG = ::std::os::raw::c_int;
364pub use self::_KLST_FLAG as KLST_FLAG;
365#[repr(C)]
366#[derive(Debug, Copy, Clone)]
367pub struct _KLST_PATTERN_MATCH {
368 pub DeviceID: [CHAR; 256usize],
369 pub DeviceInterfaceGUID: [CHAR; 256usize],
370 pub ClassGUID: [CHAR; 256usize],
371 pub z_F_i_x_e_d: [UCHAR; 256usize],
372}
373impl Default for _KLST_PATTERN_MATCH {
374 fn default() -> Self {
375 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
376 unsafe {
377 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
378 s.assume_init()
379 }
380 }
381}
382pub type KLST_PATTERN_MATCH = _KLST_PATTERN_MATCH;
383pub type PKLST_PATTERN_MATCH = *mut KLST_PATTERN_MATCH;
384#[repr(C, packed)]
385#[derive(Debug, Default, Copy, Clone)]
386pub struct _USB_ENDPOINT_DESCRIPTOR {
387 pub bLength: UCHAR,
388 pub bDescriptorType: UCHAR,
389 pub bEndpointAddress: UCHAR,
390 pub bmAttributes: UCHAR,
391 pub wMaxPacketSize: USHORT,
392 pub bInterval: UCHAR,
393}
394pub type USB_ENDPOINT_DESCRIPTOR = _USB_ENDPOINT_DESCRIPTOR;
395#[repr(C, packed)]
396#[derive(Copy, Clone)]
397pub struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR {
398 pub bLength: UCHAR,
399 pub bDescriptorType: UCHAR,
400 pub bMaxBurst: UCHAR,
401 pub bmAttributes: _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1,
402 pub wBytesPerInterval: USHORT,
403}
404#[repr(C)]
405#[derive(Copy, Clone)]
406pub union _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1 {
407 pub AsUchar: UCHAR,
408 pub Bulk: _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_1,
409 pub Isochronous: _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_2,
410}
411#[repr(C)]
412#[derive(Debug, Default, Copy, Clone)]
413pub struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_1 {
414 pub _bitfield_align_1: [u8; 0],
415 pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
416}
417impl _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_1 {
418 #[inline]
419 pub fn MaxStreams(&self) -> UCHAR {
420 unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 5u8) as u8) }
421 }
422 #[inline]
423 pub fn set_MaxStreams(&mut self, val: UCHAR) {
424 unsafe {
425 let val: u8 = ::std::mem::transmute(val);
426 self._bitfield_1.set(0usize, 5u8, val as u64)
427 }
428 }
429 #[inline]
430 pub fn Reserved1(&self) -> UCHAR {
431 unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 3u8) as u8) }
432 }
433 #[inline]
434 pub fn set_Reserved1(&mut self, val: UCHAR) {
435 unsafe {
436 let val: u8 = ::std::mem::transmute(val);
437 self._bitfield_1.set(5usize, 3u8, val as u64)
438 }
439 }
440 #[inline]
441 pub fn new_bitfield_1(
442 MaxStreams: UCHAR,
443 Reserved1: UCHAR,
444 ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
445 let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
446 __bindgen_bitfield_unit.set(0usize, 5u8, {
447 let MaxStreams: u8 = unsafe { ::std::mem::transmute(MaxStreams) };
448 MaxStreams as u64
449 });
450 __bindgen_bitfield_unit.set(5usize, 3u8, {
451 let Reserved1: u8 = unsafe { ::std::mem::transmute(Reserved1) };
452 Reserved1 as u64
453 });
454 __bindgen_bitfield_unit
455 }
456}
457#[repr(C)]
458#[derive(Debug, Default, Copy, Clone)]
459pub struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_2 {
460 pub _bitfield_align_1: [u8; 0],
461 pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
462}
463impl _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1__bindgen_ty_2 {
464 #[inline]
465 pub fn Mult(&self) -> UCHAR {
466 unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u8) }
467 }
468 #[inline]
469 pub fn set_Mult(&mut self, val: UCHAR) {
470 unsafe {
471 let val: u8 = ::std::mem::transmute(val);
472 self._bitfield_1.set(0usize, 2u8, val as u64)
473 }
474 }
475 #[inline]
476 pub fn Reserved2(&self) -> UCHAR {
477 unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 5u8) as u8) }
478 }
479 #[inline]
480 pub fn set_Reserved2(&mut self, val: UCHAR) {
481 unsafe {
482 let val: u8 = ::std::mem::transmute(val);
483 self._bitfield_1.set(2usize, 5u8, val as u64)
484 }
485 }
486 #[inline]
487 pub fn SspCompanion(&self) -> UCHAR {
488 unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) }
489 }
490 #[inline]
491 pub fn set_SspCompanion(&mut self, val: UCHAR) {
492 unsafe {
493 let val: u8 = ::std::mem::transmute(val);
494 self._bitfield_1.set(7usize, 1u8, val as u64)
495 }
496 }
497 #[inline]
498 pub fn new_bitfield_1(
499 Mult: UCHAR,
500 Reserved2: UCHAR,
501 SspCompanion: UCHAR,
502 ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
503 let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
504 __bindgen_bitfield_unit.set(0usize, 2u8, {
505 let Mult: u8 = unsafe { ::std::mem::transmute(Mult) };
506 Mult as u64
507 });
508 __bindgen_bitfield_unit.set(2usize, 5u8, {
509 let Reserved2: u8 = unsafe { ::std::mem::transmute(Reserved2) };
510 Reserved2 as u64
511 });
512 __bindgen_bitfield_unit.set(7usize, 1u8, {
513 let SspCompanion: u8 = unsafe { ::std::mem::transmute(SspCompanion) };
514 SspCompanion as u64
515 });
516 __bindgen_bitfield_unit
517 }
518}
519impl Default for _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR__bindgen_ty_1 {
520 fn default() -> Self {
521 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
522 unsafe {
523 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
524 s.assume_init()
525 }
526 }
527}
528impl Default for _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR {
529 fn default() -> Self {
530 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
531 unsafe {
532 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
533 s.assume_init()
534 }
535 }
536}
537pub type PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR =
538 *mut _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR;
539#[repr(C)]
540#[derive(Debug, Default, Copy, Clone)]
541pub struct _USB_INTERFACE_DESCRIPTOR {
542 pub bLength: UCHAR,
543 pub bDescriptorType: UCHAR,
544 pub bInterfaceNumber: UCHAR,
545 pub bAlternateSetting: UCHAR,
546 pub bNumEndpoints: UCHAR,
547 pub bInterfaceClass: UCHAR,
548 pub bInterfaceSubClass: UCHAR,
549 pub bInterfaceProtocol: UCHAR,
550 pub iInterface: UCHAR,
551}
552pub type USB_INTERFACE_DESCRIPTOR = _USB_INTERFACE_DESCRIPTOR;
553pub type PUSB_INTERFACE_DESCRIPTOR = *mut USB_INTERFACE_DESCRIPTOR;
554pub const _KUSB_PROPERTY_KUSB_PROPERTY_DEVICE_FILE_HANDLE: _KUSB_PROPERTY = 0;
555pub const _KUSB_PROPERTY_KUSB_PROPERTY_COUNT: _KUSB_PROPERTY = 1;
556pub type _KUSB_PROPERTY = ::std::os::raw::c_int;
557pub use self::_KUSB_PROPERTY as KUSB_PROPERTY;
558#[repr(C)]
559#[derive(Debug, Default, Copy, Clone)]
560pub struct _KUSB_DRIVER_API_INFO {
561 pub DriverID: INT,
562 pub FunctionCount: INT,
563}
564pub type KUSB_DRIVER_API_INFO = _KUSB_DRIVER_API_INFO;
565#[repr(C)]
566#[derive(Debug, Copy, Clone)]
567pub struct _KUSB_DRIVER_API {
568 pub Info: KUSB_DRIVER_API_INFO,
569 pub Init: ::std::option::Option<
570 unsafe extern "C" fn(arg1: *mut KUSB_HANDLE, arg2: KLST_DEVINFO_HANDLE) -> BOOL,
571 >,
572 pub Free: ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE) -> BOOL>,
573 pub ClaimInterface: ::std::option::Option<
574 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: BOOL) -> BOOL,
575 >,
576 pub ReleaseInterface: ::std::option::Option<
577 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: BOOL) -> BOOL,
578 >,
579 pub SetAltInterface: ::std::option::Option<
580 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: BOOL, arg4: UCHAR) -> BOOL,
581 >,
582 pub GetAltInterface: ::std::option::Option<
583 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: BOOL, arg4: PUCHAR) -> BOOL,
584 >,
585 pub GetDescriptor: ::std::option::Option<
586 unsafe extern "C" fn(
587 arg1: KUSB_HANDLE,
588 arg2: UCHAR,
589 arg3: UCHAR,
590 arg4: USHORT,
591 arg5: PUCHAR,
592 arg6: UINT,
593 arg7: PUINT,
594 ) -> BOOL,
595 >,
596 pub ControlTransfer: ::std::option::Option<
597 unsafe extern "C" fn(
598 arg1: KUSB_HANDLE,
599 arg2: WINUSB_SETUP_PACKET,
600 arg3: PUCHAR,
601 arg4: UINT,
602 arg5: PUINT,
603 arg6: LPOVERLAPPED,
604 ) -> BOOL,
605 >,
606 pub SetPowerPolicy: ::std::option::Option<
607 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UINT, arg3: UINT, arg4: PVOID) -> BOOL,
608 >,
609 pub GetPowerPolicy: ::std::option::Option<
610 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UINT, arg3: PUINT, arg4: PVOID) -> BOOL,
611 >,
612 pub SetConfiguration:
613 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR) -> BOOL>,
614 pub GetConfiguration:
615 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: PUCHAR) -> BOOL>,
616 pub ResetDevice: ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE) -> BOOL>,
617 pub Initialize:
618 ::std::option::Option<unsafe extern "C" fn(arg1: HANDLE, arg2: *mut KUSB_HANDLE) -> BOOL>,
619 pub SelectInterface: ::std::option::Option<
620 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: BOOL) -> BOOL,
621 >,
622 pub GetAssociatedInterface: ::std::option::Option<
623 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR, arg3: *mut KUSB_HANDLE) -> BOOL,
624 >,
625 pub Clone: ::std::option::Option<
626 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: *mut KUSB_HANDLE) -> BOOL,
627 >,
628 pub QueryInterfaceSettings: ::std::option::Option<
629 unsafe extern "C" fn(
630 arg1: KUSB_HANDLE,
631 arg2: UCHAR,
632 arg3: PUSB_INTERFACE_DESCRIPTOR,
633 ) -> BOOL,
634 >,
635 pub QueryDeviceInformation: ::std::option::Option<
636 unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UINT, arg3: PUINT, arg4: PUCHAR) -> BOOL,
637 >,
638 pub SetCurrentAlternateSetting:
639 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR) -> BOOL>,
640 pub GetCurrentAlternateSetting:
641 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: PUCHAR) -> BOOL>,
642 pub QueryPipe: ::std::option::Option<
643 unsafe extern "C" fn(
644 arg1: KUSB_HANDLE,
645 arg2: UCHAR,
646 arg3: UCHAR,
647 arg4: PWINUSB_PIPE_INFORMATION,
648 ) -> BOOL,
649 >,
650 pub SetPipePolicy: ::std::option::Option<
651 unsafe extern "C" fn(
652 arg1: KUSB_HANDLE,
653 arg2: UCHAR,
654 arg3: UINT,
655 arg4: UINT,
656 arg5: PVOID,
657 ) -> BOOL,
658 >,
659 pub GetPipePolicy: ::std::option::Option<
660 unsafe extern "C" fn(
661 arg1: KUSB_HANDLE,
662 arg2: UCHAR,
663 arg3: UINT,
664 arg4: PUINT,
665 arg5: PVOID,
666 ) -> BOOL,
667 >,
668 pub ReadPipe: ::std::option::Option<
669 unsafe extern "C" fn(
670 arg1: KUSB_HANDLE,
671 arg2: UCHAR,
672 arg3: PUCHAR,
673 arg4: UINT,
674 arg5: PUINT,
675 arg6: LPOVERLAPPED,
676 ) -> BOOL,
677 >,
678 pub WritePipe: ::std::option::Option<
679 unsafe extern "C" fn(
680 arg1: KUSB_HANDLE,
681 arg2: UCHAR,
682 arg3: PUCHAR,
683 arg4: UINT,
684 arg5: PUINT,
685 arg6: LPOVERLAPPED,
686 ) -> BOOL,
687 >,
688 pub ResetPipe:
689 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR) -> BOOL>,
690 pub AbortPipe:
691 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR) -> BOOL>,
692 pub FlushPipe:
693 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: UCHAR) -> BOOL>,
694 pub IsoReadPipe: ::std::option::Option<
695 unsafe extern "C" fn(
696 arg1: KUSB_HANDLE,
697 arg2: UCHAR,
698 arg3: PUCHAR,
699 arg4: UINT,
700 arg5: LPOVERLAPPED,
701 arg6: PKISO_CONTEXT,
702 ) -> BOOL,
703 >,
704 pub IsoWritePipe: ::std::option::Option<
705 unsafe extern "C" fn(
706 arg1: KUSB_HANDLE,
707 arg2: UCHAR,
708 arg3: PUCHAR,
709 arg4: UINT,
710 arg5: LPOVERLAPPED,
711 arg6: PKISO_CONTEXT,
712 ) -> BOOL,
713 >,
714 pub GetCurrentFrameNumber:
715 ::std::option::Option<unsafe extern "C" fn(arg1: KUSB_HANDLE, arg2: PUINT) -> BOOL>,
716 pub GetOverlappedResult: ::std::option::Option<
717 unsafe extern "C" fn(
718 arg1: KUSB_HANDLE,
719 arg2: LPOVERLAPPED,
720 arg3: PUINT,
721 arg4: BOOL,
722 ) -> BOOL,
723 >,
724 pub GetProperty: ::std::option::Option<
725 unsafe extern "C" fn(
726 arg1: KUSB_HANDLE,
727 arg2: KUSB_PROPERTY,
728 arg3: PUINT,
729 arg4: PVOID,
730 ) -> BOOL,
731 >,
732 pub IsochReadPipe: ::std::option::Option<
733 unsafe extern "C" fn(
734 arg1: KISOCH_HANDLE,
735 arg2: UINT,
736 arg3: PUINT,
737 arg4: UINT,
738 arg5: LPOVERLAPPED,
739 ) -> BOOL,
740 >,
741 pub IsochWritePipe: ::std::option::Option<
742 unsafe extern "C" fn(
743 arg1: KISOCH_HANDLE,
744 arg2: UINT,
745 arg3: PUINT,
746 arg4: UINT,
747 arg5: LPOVERLAPPED,
748 ) -> BOOL,
749 >,
750 pub QueryPipeEx: ::std::option::Option<
751 unsafe extern "C" fn(
752 arg1: KUSB_HANDLE,
753 arg2: UCHAR,
754 arg3: UCHAR,
755 arg4: PWINUSB_PIPE_INFORMATION_EX,
756 ) -> BOOL,
757 >,
758 pub GetSuperSpeedPipeCompanionDescriptor: ::std::option::Option<
759 unsafe extern "C" fn(
760 arg1: KUSB_HANDLE,
761 arg2: UCHAR,
762 arg3: UCHAR,
763 arg4: PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR,
764 ) -> BOOL,
765 >,
766 pub z_F_i_x_e_d: [UCHAR; 160usize],
767 pub z_FuncSupported: [UCHAR; 40usize],
768}
769impl Default for _KUSB_DRIVER_API {
770 fn default() -> Self {
771 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
772 unsafe {
773 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
774 s.assume_init()
775 }
776 }
777}
778pub type KUSB_DRIVER_API = _KUSB_DRIVER_API;
779pub type PKUSB_DRIVER_API = *mut KUSB_DRIVER_API;
780pub const _KHOT_FLAG_KHOT_FLAG_NONE: _KHOT_FLAG = 0;
781pub const _KHOT_FLAG_KHOT_FLAG_PLUG_ALL_ON_INIT: _KHOT_FLAG = 1;
782pub const _KHOT_FLAG_KHOT_FLAG_PASS_DUPE_INSTANCE: _KHOT_FLAG = 2;
783pub const _KHOT_FLAG_KHOT_FLAG_POST_USER_MESSAGE: _KHOT_FLAG = 4;
784pub type _KHOT_FLAG = ::std::os::raw::c_int;
785pub use self::_KHOT_FLAG as KHOT_FLAG;
786#[repr(C)]
787#[derive(Debug, Copy, Clone)]
788pub struct _KHOT_PARAMS {
789 pub UserHwnd: HWND,
790 pub UserMessage: UINT,
791 pub Flags: KHOT_FLAG,
792 pub PatternMatch: KLST_PATTERN_MATCH,
793 pub OnHotPlug: ::std::option::Option<
794 unsafe extern "C" fn(arg1: KHOT_HANDLE, arg2: KLST_DEVINFO_HANDLE, arg3: KLST_SYNC_FLAG),
795 >,
796 pub OnPowerBroadcast: ::std::option::Option<
797 unsafe extern "C" fn(arg1: KHOT_HANDLE, arg2: KLST_DEVINFO_HANDLE, arg3: UINT),
798 >,
799 pub z_F_i_x_e_d: [UCHAR; 992usize],
800}
801impl Default for _KHOT_PARAMS {
802 fn default() -> Self {
803 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
804 unsafe {
805 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
806 s.assume_init()
807 }
808 }
809}
810pub type KHOT_PARAMS = _KHOT_PARAMS;
811pub type PKHOT_PARAMS = *mut KHOT_PARAMS;
812pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_NONE: _KOVL_WAIT_FLAG = 0;
813pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_RELEASE_ON_SUCCESS: _KOVL_WAIT_FLAG = 1;
814pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_RELEASE_ON_FAIL: _KOVL_WAIT_FLAG = 2;
815pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_RELEASE_ON_SUCCESS_FAIL: _KOVL_WAIT_FLAG = 3;
816pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_CANCEL_ON_TIMEOUT: _KOVL_WAIT_FLAG = 4;
817pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_RELEASE_ON_TIMEOUT: _KOVL_WAIT_FLAG = 12;
818pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_RELEASE_ALWAYS: _KOVL_WAIT_FLAG = 15;
819pub const _KOVL_WAIT_FLAG_KOVL_WAIT_FLAG_ALERTABLE: _KOVL_WAIT_FLAG = 16;
820pub type _KOVL_WAIT_FLAG = ::std::os::raw::c_int;
821pub use self::_KOVL_WAIT_FLAG as KOVL_WAIT_FLAG;
822pub const _KOVL_POOL_FLAG_KOVL_POOL_FLAG_NONE: _KOVL_POOL_FLAG = 0;
823pub type _KOVL_POOL_FLAG = ::std::os::raw::c_int;
824pub use self::_KOVL_POOL_FLAG as KOVL_POOL_FLAG;
825pub const _KSTM_FLAG_KSTM_FLAG_NONE: _KSTM_FLAG = 0;
826pub const _KSTM_FLAG_KSTM_FLAG_NO_PARTIAL_XFERS: _KSTM_FLAG = 1048576;
827pub const _KSTM_FLAG_KSTM_FLAG_USE_TIMEOUT: _KSTM_FLAG = -2147483648;
828pub const _KSTM_FLAG_KSTM_FLAG_TIMEOUT_MASK: _KSTM_FLAG = 131071;
829pub type _KSTM_FLAG = ::std::os::raw::c_int;
830pub use self::_KSTM_FLAG as KSTM_FLAG;
831pub const _KSTM_COMPLETE_RESULT_KSTM_COMPLETE_RESULT_VALID: _KSTM_COMPLETE_RESULT = 0;
832pub const _KSTM_COMPLETE_RESULT_KSTM_COMPLETE_RESULT_INVALID: _KSTM_COMPLETE_RESULT = 1;
833pub type _KSTM_COMPLETE_RESULT = ::std::os::raw::c_int;
834pub use self::_KSTM_COMPLETE_RESULT as KSTM_COMPLETE_RESULT;
835#[repr(C)]
836#[derive(Debug, Copy, Clone)]
837pub struct _KSTM_XFER_CONTEXT {
838 pub Buffer: PUCHAR,
839 pub BufferSize: INT,
840 pub TransferLength: INT,
841 pub UserState: PVOID,
842}
843impl Default for _KSTM_XFER_CONTEXT {
844 fn default() -> Self {
845 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
846 unsafe {
847 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
848 s.assume_init()
849 }
850 }
851}
852pub type KSTM_XFER_CONTEXT = _KSTM_XFER_CONTEXT;
853pub type PKSTM_XFER_CONTEXT = *mut KSTM_XFER_CONTEXT;
854#[repr(C)]
855#[derive(Debug, Copy, Clone)]
856pub struct _KSTM_INFO {
857 pub UsbHandle: KUSB_HANDLE,
858 pub PipeID: UCHAR,
859 pub MaxPendingTransfers: INT,
860 pub MaxTransferSize: INT,
861 pub MaxPendingIO: INT,
862 pub EndpointDescriptor: USB_ENDPOINT_DESCRIPTOR,
863 pub DriverAPI: KUSB_DRIVER_API,
864 pub DeviceHandle: HANDLE,
865 pub StreamHandle: KSTM_HANDLE,
866 pub UserState: PVOID,
867}
868impl Default for _KSTM_INFO {
869 fn default() -> Self {
870 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
871 unsafe {
872 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
873 s.assume_init()
874 }
875 }
876}
877pub type KSTM_INFO = _KSTM_INFO;
878pub type PKSTM_INFO = *mut KSTM_INFO;
879#[repr(C)]
880#[derive(Debug, Default, Copy, Clone)]
881pub struct _KSTM_CALLBACK {
882 pub Error: ::std::option::Option<
883 unsafe extern "C" fn(
884 arg1: PKSTM_INFO,
885 arg2: PKSTM_XFER_CONTEXT,
886 arg3: INT,
887 arg4: INT,
888 ) -> INT,
889 >,
890 pub Submit: ::std::option::Option<
891 unsafe extern "C" fn(
892 arg1: PKSTM_INFO,
893 arg2: PKSTM_XFER_CONTEXT,
894 arg3: INT,
895 arg4: LPOVERLAPPED,
896 ) -> INT,
897 >,
898 pub Complete: ::std::option::Option<
899 unsafe extern "C" fn(
900 arg1: PKSTM_INFO,
901 arg2: PKSTM_XFER_CONTEXT,
902 arg3: INT,
903 arg4: INT,
904 ) -> INT,
905 >,
906 pub Started: ::std::option::Option<
907 unsafe extern "C" fn(arg1: PKSTM_INFO, arg2: PKSTM_XFER_CONTEXT, arg3: INT) -> INT,
908 >,
909 pub Stopped: ::std::option::Option<
910 unsafe extern "C" fn(arg1: PKSTM_INFO, arg2: PKSTM_XFER_CONTEXT, arg3: INT) -> INT,
911 >,
912 pub BeforeComplete: ::std::option::Option<
913 unsafe extern "C" fn(
914 arg1: PKSTM_INFO,
915 arg2: PKSTM_XFER_CONTEXT,
916 arg3: INT,
917 arg4: PINT,
918 ) -> KSTM_COMPLETE_RESULT,
919 >,
920 pub z_F_i_x_e_d: [UCHAR; 16usize],
921}
922pub type KSTM_CALLBACK = _KSTM_CALLBACK;
923pub type PKSTM_CALLBACK = *mut KSTM_CALLBACK;
924extern "C" {
925 pub fn LibK_GetVersion(Version: PKLIB_VERSION);
926}
927extern "C" {
928 pub fn LibK_GetContext(Handle: KLIB_HANDLE, HandleType: KLIB_HANDLE_TYPE) -> KLIB_USER_CONTEXT;
929}
930extern "C" {
931 pub fn LibK_SetContext(
932 Handle: KLIB_HANDLE,
933 HandleType: KLIB_HANDLE_TYPE,
934 ContextValue: KLIB_USER_CONTEXT,
935 ) -> BOOL;
936}
937extern "C" {
938 pub fn LibK_SetCleanupCallback(
939 Handle: KLIB_HANDLE,
940 HandleType: KLIB_HANDLE_TYPE,
941 CleanupCB: ::std::option::Option<
942 unsafe extern "C" fn(
943 arg1: KLIB_HANDLE,
944 arg2: KLIB_HANDLE_TYPE,
945 arg3: KLIB_USER_CONTEXT,
946 ) -> INT,
947 >,
948 ) -> BOOL;
949}
950extern "C" {
951 pub fn LibK_LoadDriverAPI(DriverAPI: PKUSB_DRIVER_API, DriverID: INT) -> BOOL;
952}
953extern "C" {
954 pub fn LibK_IsFunctionSupported(DriverAPI: PKUSB_DRIVER_API, FunctionID: UINT) -> BOOL;
955}
956extern "C" {
957 pub fn LibK_CopyDriverAPI(DriverAPI: PKUSB_DRIVER_API, UsbHandle: KUSB_HANDLE) -> BOOL;
958}
959extern "C" {
960 pub fn LibK_GetProcAddress(ProcAddress: *mut KPROC, DriverID: INT, FunctionID: INT) -> BOOL;
961}
962extern "C" {
963 pub fn LibK_SetDefaultContext(
964 HandleType: KLIB_HANDLE_TYPE,
965 ContextValue: KLIB_USER_CONTEXT,
966 ) -> BOOL;
967}
968extern "C" {
969 pub fn LibK_GetDefaultContext(HandleType: KLIB_HANDLE_TYPE) -> KLIB_USER_CONTEXT;
970}
971extern "C" {
972 pub fn LibK_Context_Init(Heap: HANDLE, Reserved: PVOID) -> BOOL;
973}
974extern "C" {
975 pub fn LibK_Context_Free();
976}
977extern "C" {
978 pub fn UsbK_Init(InterfaceHandle: *mut KUSB_HANDLE, DevInfo: KLST_DEVINFO_HANDLE) -> BOOL;
979}
980extern "C" {
981 pub fn UsbK_Free(InterfaceHandle: KUSB_HANDLE) -> BOOL;
982}
983extern "C" {
984 pub fn UsbK_ClaimInterface(
985 InterfaceHandle: KUSB_HANDLE,
986 NumberOrIndex: UCHAR,
987 IsIndex: BOOL,
988 ) -> BOOL;
989}
990extern "C" {
991 pub fn UsbK_ReleaseInterface(
992 InterfaceHandle: KUSB_HANDLE,
993 NumberOrIndex: UCHAR,
994 IsIndex: BOOL,
995 ) -> BOOL;
996}
997extern "C" {
998 pub fn UsbK_SetAltInterface(
999 InterfaceHandle: KUSB_HANDLE,
1000 NumberOrIndex: UCHAR,
1001 IsIndex: BOOL,
1002 AltSettingNumber: UCHAR,
1003 ) -> BOOL;
1004}
1005extern "C" {
1006 pub fn UsbK_GetAltInterface(
1007 InterfaceHandle: KUSB_HANDLE,
1008 NumberOrIndex: UCHAR,
1009 IsIndex: BOOL,
1010 AltSettingNumber: PUCHAR,
1011 ) -> BOOL;
1012}
1013extern "C" {
1014 pub fn UsbK_GetDescriptor(
1015 InterfaceHandle: KUSB_HANDLE,
1016 DescriptorType: UCHAR,
1017 Index: UCHAR,
1018 LanguageID: USHORT,
1019 Buffer: PUCHAR,
1020 BufferLength: UINT,
1021 LengthTransferred: PUINT,
1022 ) -> BOOL;
1023}
1024extern "C" {
1025 pub fn UsbK_ControlTransfer(
1026 InterfaceHandle: KUSB_HANDLE,
1027 SetupPacket: WINUSB_SETUP_PACKET,
1028 Buffer: PUCHAR,
1029 BufferLength: UINT,
1030 LengthTransferred: PUINT,
1031 Overlapped: LPOVERLAPPED,
1032 ) -> BOOL;
1033}
1034extern "C" {
1035 pub fn UsbK_SetPowerPolicy(
1036 InterfaceHandle: KUSB_HANDLE,
1037 PolicyType: UINT,
1038 ValueLength: UINT,
1039 Value: PVOID,
1040 ) -> BOOL;
1041}
1042extern "C" {
1043 pub fn UsbK_GetPowerPolicy(
1044 InterfaceHandle: KUSB_HANDLE,
1045 PolicyType: UINT,
1046 ValueLength: PUINT,
1047 Value: PVOID,
1048 ) -> BOOL;
1049}
1050extern "C" {
1051 pub fn UsbK_SetConfiguration(InterfaceHandle: KUSB_HANDLE, ConfigurationNumber: UCHAR) -> BOOL;
1052}
1053extern "C" {
1054 pub fn UsbK_GetConfiguration(InterfaceHandle: KUSB_HANDLE, ConfigurationNumber: PUCHAR)
1055 -> BOOL;
1056}
1057extern "C" {
1058 pub fn UsbK_ResetDevice(InterfaceHandle: KUSB_HANDLE) -> BOOL;
1059}
1060extern "C" {
1061 pub fn UsbK_Initialize(DeviceHandle: HANDLE, InterfaceHandle: *mut KUSB_HANDLE) -> BOOL;
1062}
1063extern "C" {
1064 pub fn UsbK_SelectInterface(
1065 InterfaceHandle: KUSB_HANDLE,
1066 NumberOrIndex: UCHAR,
1067 IsIndex: BOOL,
1068 ) -> BOOL;
1069}
1070extern "C" {
1071 pub fn UsbK_GetAssociatedInterface(
1072 InterfaceHandle: KUSB_HANDLE,
1073 AssociatedInterfaceIndex: UCHAR,
1074 AssociatedInterfaceHandle: *mut KUSB_HANDLE,
1075 ) -> BOOL;
1076}
1077extern "C" {
1078 pub fn UsbK_Clone(InterfaceHandle: KUSB_HANDLE, DstInterfaceHandle: *mut KUSB_HANDLE) -> BOOL;
1079}
1080extern "C" {
1081 pub fn UsbK_QueryInterfaceSettings(
1082 InterfaceHandle: KUSB_HANDLE,
1083 AltSettingIndex: UCHAR,
1084 UsbAltInterfaceDescriptor: PUSB_INTERFACE_DESCRIPTOR,
1085 ) -> BOOL;
1086}
1087extern "C" {
1088 pub fn UsbK_QueryDeviceInformation(
1089 InterfaceHandle: KUSB_HANDLE,
1090 InformationType: UINT,
1091 BufferLength: PUINT,
1092 Buffer: PUCHAR,
1093 ) -> BOOL;
1094}
1095extern "C" {
1096 pub fn UsbK_SetCurrentAlternateSetting(
1097 InterfaceHandle: KUSB_HANDLE,
1098 AltSettingNumber: UCHAR,
1099 ) -> BOOL;
1100}
1101extern "C" {
1102 pub fn UsbK_GetCurrentAlternateSetting(
1103 InterfaceHandle: KUSB_HANDLE,
1104 AltSettingNumber: PUCHAR,
1105 ) -> BOOL;
1106}
1107extern "C" {
1108 pub fn UsbK_QueryPipe(
1109 InterfaceHandle: KUSB_HANDLE,
1110 AltSettingNumber: UCHAR,
1111 PipeIndex: UCHAR,
1112 PipeInformation: PWINUSB_PIPE_INFORMATION,
1113 ) -> BOOL;
1114}
1115extern "C" {
1116 pub fn UsbK_QueryPipeEx(
1117 InterfaceHandle: KUSB_HANDLE,
1118 AltSettingNumber: UCHAR,
1119 PipeIndex: UCHAR,
1120 PipeInformationEx: PWINUSB_PIPE_INFORMATION_EX,
1121 ) -> BOOL;
1122}
1123extern "C" {
1124 pub fn UsbK_GetSuperSpeedPipeCompanionDescriptor(
1125 InterfaceHandle: KUSB_HANDLE,
1126 AltSettingNumber: UCHAR,
1127 PipeIndex: UCHAR,
1128 PipeCompanionDescriptor: PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR,
1129 ) -> BOOL;
1130}
1131extern "C" {
1132 pub fn UsbK_SetPipePolicy(
1133 InterfaceHandle: KUSB_HANDLE,
1134 PipeID: UCHAR,
1135 PolicyType: UINT,
1136 ValueLength: UINT,
1137 Value: PVOID,
1138 ) -> BOOL;
1139}
1140extern "C" {
1141 pub fn UsbK_GetPipePolicy(
1142 InterfaceHandle: KUSB_HANDLE,
1143 PipeID: UCHAR,
1144 PolicyType: UINT,
1145 ValueLength: PUINT,
1146 Value: PVOID,
1147 ) -> BOOL;
1148}
1149extern "C" {
1150 pub fn UsbK_ReadPipe(
1151 InterfaceHandle: KUSB_HANDLE,
1152 PipeID: UCHAR,
1153 Buffer: PUCHAR,
1154 BufferLength: UINT,
1155 LengthTransferred: PUINT,
1156 Overlapped: LPOVERLAPPED,
1157 ) -> BOOL;
1158}
1159extern "C" {
1160 pub fn UsbK_WritePipe(
1161 InterfaceHandle: KUSB_HANDLE,
1162 PipeID: UCHAR,
1163 Buffer: PUCHAR,
1164 BufferLength: UINT,
1165 LengthTransferred: PUINT,
1166 Overlapped: LPOVERLAPPED,
1167 ) -> BOOL;
1168}
1169extern "C" {
1170 pub fn UsbK_ResetPipe(InterfaceHandle: KUSB_HANDLE, PipeID: UCHAR) -> BOOL;
1171}
1172extern "C" {
1173 pub fn UsbK_AbortPipe(InterfaceHandle: KUSB_HANDLE, PipeID: UCHAR) -> BOOL;
1174}
1175extern "C" {
1176 pub fn UsbK_FlushPipe(InterfaceHandle: KUSB_HANDLE, PipeID: UCHAR) -> BOOL;
1177}
1178extern "C" {
1179 pub fn UsbK_IsoReadPipe(
1180 InterfaceHandle: KUSB_HANDLE,
1181 PipeID: UCHAR,
1182 Buffer: PUCHAR,
1183 BufferLength: UINT,
1184 Overlapped: LPOVERLAPPED,
1185 IsoContext: PKISO_CONTEXT,
1186 ) -> BOOL;
1187}
1188extern "C" {
1189 pub fn UsbK_IsoWritePipe(
1190 InterfaceHandle: KUSB_HANDLE,
1191 PipeID: UCHAR,
1192 Buffer: PUCHAR,
1193 BufferLength: UINT,
1194 Overlapped: LPOVERLAPPED,
1195 IsoContext: PKISO_CONTEXT,
1196 ) -> BOOL;
1197}
1198extern "C" {
1199 pub fn UsbK_GetCurrentFrameNumber(InterfaceHandle: KUSB_HANDLE, FrameNumber: PUINT) -> BOOL;
1200}
1201extern "C" {
1202 pub fn UsbK_IsochReadPipe(
1203 IsochHandle: KISOCH_HANDLE,
1204 DataLength: UINT,
1205 FrameNumber: PUINT,
1206 NumberOfPackets: UINT,
1207 Overlapped: LPOVERLAPPED,
1208 ) -> BOOL;
1209}
1210extern "C" {
1211 pub fn UsbK_IsochWritePipe(
1212 IsochHandle: KISOCH_HANDLE,
1213 DataLength: UINT,
1214 FrameNumber: PUINT,
1215 NumberOfPackets: UINT,
1216 Overlapped: LPOVERLAPPED,
1217 ) -> BOOL;
1218}
1219extern "C" {
1220 pub fn UsbK_GetOverlappedResult(
1221 InterfaceHandle: KUSB_HANDLE,
1222 Overlapped: LPOVERLAPPED,
1223 lpNumberOfBytesTransferred: PUINT,
1224 bWait: BOOL,
1225 ) -> BOOL;
1226}
1227extern "C" {
1228 pub fn UsbK_GetProperty(
1229 InterfaceHandle: KUSB_HANDLE,
1230 PropertyType: KUSB_PROPERTY,
1231 PropertySize: PUINT,
1232 Value: PVOID,
1233 ) -> BOOL;
1234}
1235extern "C" {
1236 pub fn LstK_Init(DeviceList: *mut KLST_HANDLE, Flags: KLST_FLAG) -> BOOL;
1237}
1238extern "C" {
1239 pub fn LstK_InitEx(
1240 DeviceList: *mut KLST_HANDLE,
1241 Flags: KLST_FLAG,
1242 PatternMatch: PKLST_PATTERN_MATCH,
1243 ) -> BOOL;
1244}
1245extern "C" {
1246 pub fn LstK_Free(DeviceList: KLST_HANDLE) -> BOOL;
1247}
1248extern "C" {
1249 pub fn LstK_Enumerate(
1250 DeviceList: KLST_HANDLE,
1251 EnumDevListCB: ::std::option::Option<
1252 unsafe extern "C" fn(arg1: KLST_HANDLE, arg2: KLST_DEVINFO_HANDLE, arg3: PVOID) -> BOOL,
1253 >,
1254 Context: PVOID,
1255 ) -> BOOL;
1256}
1257extern "C" {
1258 pub fn LstK_Current(DeviceList: KLST_HANDLE, DeviceInfo: *mut KLST_DEVINFO_HANDLE) -> BOOL;
1259}
1260extern "C" {
1261 pub fn LstK_MoveNext(DeviceList: KLST_HANDLE, DeviceInfo: *mut KLST_DEVINFO_HANDLE) -> BOOL;
1262}
1263extern "C" {
1264 pub fn LstK_MoveReset(DeviceList: KLST_HANDLE);
1265}
1266extern "C" {
1267 pub fn LstK_FindByVidPid(
1268 DeviceList: KLST_HANDLE,
1269 Vid: INT,
1270 Pid: INT,
1271 DeviceInfo: *mut KLST_DEVINFO_HANDLE,
1272 ) -> BOOL;
1273}
1274extern "C" {
1275 pub fn LstK_Count(DeviceList: KLST_HANDLE, Count: PUINT) -> BOOL;
1276}
1277extern "C" {
1278 pub fn HotK_Init(Handle: *mut KHOT_HANDLE, InitParams: PKHOT_PARAMS) -> BOOL;
1279}
1280extern "C" {
1281 pub fn HotK_Free(Handle: KHOT_HANDLE) -> BOOL;
1282}
1283extern "C" {
1284 pub fn HotK_FreeAll();
1285}
1286extern "C" {
1287 pub fn OvlK_Acquire(OverlappedK: *mut KOVL_HANDLE, PoolHandle: KOVL_POOL_HANDLE) -> BOOL;
1288}
1289extern "C" {
1290 pub fn OvlK_Release(OverlappedK: KOVL_HANDLE) -> BOOL;
1291}
1292extern "C" {
1293 pub fn OvlK_Init(
1294 PoolHandle: *mut KOVL_POOL_HANDLE,
1295 UsbHandle: KUSB_HANDLE,
1296 MaxOverlappedCount: INT,
1297 Flags: KOVL_POOL_FLAG,
1298 ) -> BOOL;
1299}
1300extern "C" {
1301 pub fn OvlK_Free(PoolHandle: KOVL_POOL_HANDLE) -> BOOL;
1302}
1303extern "C" {
1304 pub fn OvlK_GetEventHandle(OverlappedK: KOVL_HANDLE) -> HANDLE;
1305}
1306extern "C" {
1307 pub fn OvlK_Wait(
1308 OverlappedK: KOVL_HANDLE,
1309 TimeoutMS: INT,
1310 WaitFlags: KOVL_WAIT_FLAG,
1311 TransferredLength: PUINT,
1312 ) -> BOOL;
1313}
1314extern "C" {
1315 pub fn OvlK_WaitOldest(
1316 PoolHandle: KOVL_POOL_HANDLE,
1317 OverlappedK: *mut KOVL_HANDLE,
1318 TimeoutMS: INT,
1319 WaitFlags: KOVL_WAIT_FLAG,
1320 TransferredLength: PUINT,
1321 ) -> BOOL;
1322}
1323extern "C" {
1324 pub fn OvlK_WaitOrCancel(
1325 OverlappedK: KOVL_HANDLE,
1326 TimeoutMS: INT,
1327 TransferredLength: PUINT,
1328 ) -> BOOL;
1329}
1330extern "C" {
1331 pub fn OvlK_WaitAndRelease(
1332 OverlappedK: KOVL_HANDLE,
1333 TimeoutMS: INT,
1334 TransferredLength: PUINT,
1335 ) -> BOOL;
1336}
1337extern "C" {
1338 pub fn OvlK_IsComplete(OverlappedK: KOVL_HANDLE) -> BOOL;
1339}
1340extern "C" {
1341 pub fn OvlK_ReUse(OverlappedK: KOVL_HANDLE) -> BOOL;
1342}
1343extern "C" {
1344 pub fn StmK_Init(
1345 StreamHandle: *mut KSTM_HANDLE,
1346 UsbHandle: KUSB_HANDLE,
1347 PipeID: UCHAR,
1348 MaxTransferSize: INT,
1349 MaxPendingTransfers: INT,
1350 MaxPendingIO: INT,
1351 Callbacks: PKSTM_CALLBACK,
1352 Flags: KSTM_FLAG,
1353 ) -> BOOL;
1354}
1355extern "C" {
1356 pub fn StmK_Free(StreamHandle: KSTM_HANDLE) -> BOOL;
1357}
1358extern "C" {
1359 pub fn StmK_Start(StreamHandle: KSTM_HANDLE) -> BOOL;
1360}
1361extern "C" {
1362 pub fn StmK_Stop(StreamHandle: KSTM_HANDLE, TimeoutCancelMS: INT) -> BOOL;
1363}
1364extern "C" {
1365 pub fn StmK_Read(
1366 StreamHandle: KSTM_HANDLE,
1367 Buffer: PUCHAR,
1368 Offset: INT,
1369 Length: INT,
1370 TransferredLength: PUINT,
1371 ) -> BOOL;
1372}
1373extern "C" {
1374 pub fn StmK_Write(
1375 StreamHandle: KSTM_HANDLE,
1376 Buffer: PUCHAR,
1377 Offset: INT,
1378 Length: INT,
1379 TransferredLength: PUINT,
1380 ) -> BOOL;
1381}
1382extern "C" {
1383 pub fn IsoK_Init(IsoContext: *mut PKISO_CONTEXT, NumberOfPackets: INT, StartFrame: INT)
1384 -> BOOL;
1385}
1386extern "C" {
1387 pub fn IsoK_Free(IsoContext: PKISO_CONTEXT) -> BOOL;
1388}
1389extern "C" {
1390 pub fn IsoK_SetPackets(IsoContext: PKISO_CONTEXT, PacketSize: INT) -> BOOL;
1391}
1392extern "C" {
1393 pub fn IsoK_SetPacket(
1394 IsoContext: PKISO_CONTEXT,
1395 PacketIndex: INT,
1396 IsoPacket: PKISO_PACKET,
1397 ) -> BOOL;
1398}
1399extern "C" {
1400 pub fn IsoK_GetPacket(
1401 IsoContext: PKISO_CONTEXT,
1402 PacketIndex: INT,
1403 IsoPacket: PKISO_PACKET,
1404 ) -> BOOL;
1405}
1406extern "C" {
1407 pub fn IsoK_EnumPackets(
1408 IsoContext: PKISO_CONTEXT,
1409 EnumPackets: ::std::option::Option<
1410 unsafe extern "C" fn(arg1: UINT, arg2: PKISO_PACKET, arg3: PVOID) -> BOOL,
1411 >,
1412 StartPacketIndex: INT,
1413 UserState: PVOID,
1414 ) -> BOOL;
1415}
1416extern "C" {
1417 pub fn IsoK_ReUse(IsoContext: PKISO_CONTEXT) -> BOOL;
1418}
1419extern "C" {
1420 pub fn IsochK_Init(
1421 IsochHandle: *mut KISOCH_HANDLE,
1422 InterfaceHandle: KUSB_HANDLE,
1423 PipeId: UCHAR,
1424 MaxNumberOfPackets: UINT,
1425 TransferBuffer: PUCHAR,
1426 TransferBufferSize: UINT,
1427 ) -> BOOL;
1428}
1429extern "C" {
1430 pub fn IsochK_Free(IsochHandle: KISOCH_HANDLE) -> BOOL;
1431}
1432extern "C" {
1433 pub fn IsochK_SetPacketOffsets(IsochHandle: KISOCH_HANDLE, PacketSize: UINT) -> BOOL;
1434}
1435extern "C" {
1436 pub fn IsochK_SetPacket(
1437 IsochHandle: KISOCH_HANDLE,
1438 PacketIndex: UINT,
1439 Offset: UINT,
1440 Length: UINT,
1441 Status: UINT,
1442 ) -> BOOL;
1443}
1444extern "C" {
1445 pub fn IsochK_GetPacket(
1446 IsochHandle: KISOCH_HANDLE,
1447 PacketIndex: UINT,
1448 Offset: PUINT,
1449 Length: PUINT,
1450 Status: PUINT,
1451 ) -> BOOL;
1452}
1453extern "C" {
1454 pub fn IsochK_EnumPackets(
1455 IsochHandle: KISOCH_HANDLE,
1456 EnumPackets: ::std::option::Option<
1457 unsafe extern "C" fn(
1458 arg1: UINT,
1459 arg2: PUINT,
1460 arg3: PUINT,
1461 arg4: PUINT,
1462 arg5: PVOID,
1463 ) -> BOOL,
1464 >,
1465 StartPacketIndex: UINT,
1466 UserState: PVOID,
1467 ) -> BOOL;
1468}
1469extern "C" {
1470 pub fn IsochK_CalcPacketInformation(
1471 IsHighSpeed: BOOL,
1472 PipeInformationEx: PWINUSB_PIPE_INFORMATION_EX,
1473 PacketInformation: PKISOCH_PACKET_INFORMATION,
1474 ) -> BOOL;
1475}
1476extern "C" {
1477 pub fn IsochK_GetNumberOfPackets(IsochHandle: KISOCH_HANDLE, NumberOfPackets: PUINT) -> BOOL;
1478}
1479extern "C" {
1480 pub fn IsochK_SetNumberOfPackets(IsochHandle: KISOCH_HANDLE, NumberOfPackets: UINT) -> BOOL;
1481}
1482extern "C" {
1483 pub fn LUsb0_ControlTransfer(
1484 InterfaceHandle: KUSB_HANDLE,
1485 SetupPacket: WINUSB_SETUP_PACKET,
1486 Buffer: PUCHAR,
1487 BufferLength: UINT,
1488 LengthTransferred: PUINT,
1489 Overlapped: LPOVERLAPPED,
1490 ) -> BOOL;
1491}
1492extern "C" {
1493 pub fn LUsb0_SetConfiguration(InterfaceHandle: KUSB_HANDLE, ConfigurationNumber: UCHAR)
1494 -> BOOL;
1495}