Skip to content

Commit fbc0770

Browse files
committed
Add usbioctl bindings
1 parent 4c124c3 commit fbc0770

File tree

9 files changed

+737
-35
lines changed

9 files changed

+737
-35
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ transportsettingcommon = []
108108
tvout = []
109109
udpmib = []
110110
usb = []
111+
usbioctl = []
111112
usbiodef = []
112113
usbspec = []
113114
windef = []

build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ const DATA: &'static [(&'static str, &'static [&'static str], &'static [&'static
8383
("tvout", &["guiddef", "minwindef"], &[]),
8484
("udpmib", &["basetsd", "in6addr", "minwindef", "ntdef"], &[]),
8585
("usb", &["minwindef", "usbspec", "winnt"], &[]),
86+
("usbioctl", &["basetsd", "guiddef", "minwindef", "ntdef", "usb", "usbiodef", "usbspec", "winioctl"], &[]),
8687
("usbiodef", &["guiddef", "minwindef", "winioctl", "winnt"], &[]),
8788
("usbspec", &["basetsd", "guiddef", "minwindef", "winnt"], &[]),
8889
("windef", &["minwindef", "winnt"], &[]),

src/shared/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ pub mod guiddef;
7474
#[cfg(feature = "tvout")] pub mod tvout;
7575
#[cfg(feature = "udpmib")] pub mod udpmib;
7676
#[cfg(feature = "usb")] pub mod usb;
77+
#[cfg(feature = "usbioctl")] pub mod usbioctl;
7778
#[cfg(feature = "usbiodef")] pub mod usbiodef;
7879
#[cfg(feature = "usbspec")] pub mod usbspec;
7980
#[cfg(feature = "windef")] pub mod windef;

src/shared/ntdef.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,22 +198,32 @@ pub type USN = LONGLONG;
198198
UNION!{union LARGE_INTEGER {
199199
[i64; 1],
200200
s s_mut: LARGE_INTEGER_s,
201+
u u_mut: LARGE_INTEGER_u,
201202
QuadPart QuadPart_mut: LONGLONG,
202203
}}
203204
STRUCT!{struct LARGE_INTEGER_s {
204205
LowPart: ULONG,
205206
HighPart: LONG,
206207
}}
208+
STRUCT!{struct LARGE_INTEGER_u {
209+
LowPart: ULONG,
210+
HighPart: LONG,
211+
}}
207212
pub type PLARGE_INTEGER = *mut LARGE_INTEGER;
208213
UNION!{union ULARGE_INTEGER {
209214
[u64; 1],
210215
s s_mut: ULARGE_INTEGER_s,
216+
u u_mut: ULARGE_INTEGER_s,
211217
QuadPart QuadPart_mut: ULONGLONG,
212218
}}
213219
STRUCT!{struct ULARGE_INTEGER_s {
214220
LowPart: ULONG,
215221
HighPart: ULONG,
216222
}}
223+
STRUCT!{struct ULARGE_INTEGER_u {
224+
LowPart: ULONG,
225+
HighPart: ULONG,
226+
}}
217227
pub type PULARGE_INTEGER = *mut ULARGE_INTEGER;
218228
pub type RTL_REFERENCE_COUNT = LONG_PTR;
219229
pub type PRTL_REFERENCE_COUNT = *mut RTL_REFERENCE_COUNT;

src/shared/usbioctl.rs

Lines changed: 705 additions & 0 deletions
Large diffs are not rendered by default.

src/shared/usbiodef.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ pub const USB_GET_HUB_CAPABILITIES_EX: ULONG = 276;
6363
pub const USB_GET_HUB_INFORMATION_EX: ULONG = 277;
6464
pub const USB_GET_PORT_CONNECTOR_PROPERTIES: ULONG = 278;
6565
pub const USB_GET_NODE_CONNECTION_INFORMATION_EX_V2: ULONG = 279;
66+
pub const USB_GET_TRANSPORT_CHARACTERISTICS: ULONG = 281;
67+
pub const USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE: ULONG = 282;
68+
pub const USB_NOTIFY_ON_TRANSPORT_CHARACTERISTICS_CHANGE: ULONG = 283;
69+
pub const USB_UNREGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE: ULONG = 284;
70+
pub const USB_START_TRACKING_FOR_TIME_SYNC: ULONG = 285;
71+
pub const USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC: ULONG = 286;
72+
pub const USB_STOP_TRACKING_FOR_TIME_SYNC: ULONG = 287;
73+
pub const USB_GET_DEVICE_CHARACTERISTICS: ULONG = 288;
6674
DEFINE_GUID!{GUID_DEVINTERFACE_USB_HUB,
6775
0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8}
6876
DEFINE_GUID!{GUID_DEVINTERFACE_USB_DEVICE,

src/um/winnt.rs

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -148,25 +148,9 @@ pub const MAXLONGLONG: LONGLONG = 0x7fffffffffffffff;
148148
pub type PLONGLONG = *mut LONGLONG;
149149
pub type PULONGLONG = *mut ULONGLONG;
150150
pub type USN = LONGLONG;
151-
STRUCT!{struct LARGE_INTEGER_u {
152-
LowPart: DWORD,
153-
HighPart: LONG,
154-
}}
155-
UNION!{union LARGE_INTEGER {
156-
[u64; 1],
157-
QuadPart QuadPart_mut: LONGLONG,
158-
u u_mut: LARGE_INTEGER_u,
159-
}}
151+
pub use shared::ntdef::LARGE_INTEGER;
160152
pub type PLARGE_INTEGER = *mut LARGE_INTEGER;
161-
STRUCT!{struct ULARGE_INTEGER_u {
162-
LowPart: DWORD,
163-
HighPart: LONG,
164-
}}
165-
UNION!{union ULARGE_INTEGER {
166-
[u64; 1],
167-
QuadPart QuadPart_mut: ULONGLONG,
168-
u u_mut: ULARGE_INTEGER_u,
169-
}}
153+
pub use shared::ntdef::ULARGE_INTEGER;
170154
pub type PULARGE_INTEGER = *mut ULARGE_INTEGER;
171155
pub type RTL_REFERENCE_COUNT = LONG_PTR;
172156
pub type PRTL_REFERENCE_COUNT = *mut LONG_PTR;
@@ -6972,7 +6956,7 @@ STRUCT!{struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
69726956
EndAddress: DWORD,
69736957
u: IMAGE_RUNTIME_FUNCTION_ENTRY_u,
69746958
}}
6975-
type _PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut _IMAGE_RUNTIME_FUNCTION_ENTRY;
6959+
pub type _PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut _IMAGE_RUNTIME_FUNCTION_ENTRY;
69766960
pub type IMAGE_IA64_RUNTIME_FUNCTION_ENTRY = _IMAGE_RUNTIME_FUNCTION_ENTRY;
69776961
pub type PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY = _PIMAGE_RUNTIME_FUNCTION_ENTRY;
69786962
#[cfg(target_arch = "aarch64")]

tests/structs_x86.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,10 +1016,14 @@ fn shared_ntdef() {
10161016
assert_eq!(align_of::<LARGE_INTEGER>(), 8);
10171017
assert_eq!(size_of::<LARGE_INTEGER_s>(), 8);
10181018
assert_eq!(align_of::<LARGE_INTEGER_s>(), 4);
1019+
assert_eq!(size_of::<LARGE_INTEGER_u>(), 8);
1020+
assert_eq!(align_of::<LARGE_INTEGER_u>(), 4);
10191021
assert_eq!(size_of::<ULARGE_INTEGER>(), 8);
10201022
assert_eq!(align_of::<ULARGE_INTEGER>(), 8);
10211023
assert_eq!(size_of::<ULARGE_INTEGER_s>(), 8);
10221024
assert_eq!(align_of::<ULARGE_INTEGER_s>(), 4);
1025+
assert_eq!(size_of::<ULARGE_INTEGER_u>(), 8);
1026+
assert_eq!(align_of::<ULARGE_INTEGER_u>(), 4);
10231027
assert_eq!(size_of::<LUID>(), 8);
10241028
assert_eq!(align_of::<LUID>(), 4);
10251029
assert_eq!(size_of::<STRING>(), 8);
@@ -8157,14 +8161,6 @@ fn um_winnt() {
81578161
assert_eq!(align_of::<GROUP_AFFINITY>(), 4);
81588162
assert_eq!(size_of::<FLOAT128>(), 16);
81598163
assert_eq!(align_of::<FLOAT128>(), 8);
8160-
assert_eq!(size_of::<LARGE_INTEGER_u>(), 8);
8161-
assert_eq!(align_of::<LARGE_INTEGER_u>(), 4);
8162-
assert_eq!(size_of::<LARGE_INTEGER>(), 8);
8163-
assert_eq!(align_of::<LARGE_INTEGER>(), 8);
8164-
assert_eq!(size_of::<ULARGE_INTEGER_u>(), 8);
8165-
assert_eq!(align_of::<ULARGE_INTEGER_u>(), 4);
8166-
assert_eq!(size_of::<ULARGE_INTEGER>(), 8);
8167-
assert_eq!(align_of::<ULARGE_INTEGER>(), 8);
81688164
assert_eq!(size_of::<LUID>(), 8);
81698165
assert_eq!(align_of::<LUID>(), 4);
81708166
assert_eq!(size_of::<LIST_ENTRY>(), 8);

tests/structs_x86_64.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,10 +1033,14 @@ fn shared_ntdef() {
10331033
assert_eq!(align_of::<LARGE_INTEGER>(), 8);
10341034
assert_eq!(size_of::<LARGE_INTEGER_s>(), 8);
10351035
assert_eq!(align_of::<LARGE_INTEGER_s>(), 4);
1036+
assert_eq!(size_of::<LARGE_INTEGER_u>(), 8);
1037+
assert_eq!(align_of::<LARGE_INTEGER_u>(), 4);
10361038
assert_eq!(size_of::<ULARGE_INTEGER>(), 8);
10371039
assert_eq!(align_of::<ULARGE_INTEGER>(), 8);
10381040
assert_eq!(size_of::<ULARGE_INTEGER_s>(), 8);
10391041
assert_eq!(align_of::<ULARGE_INTEGER_s>(), 4);
1042+
assert_eq!(size_of::<ULARGE_INTEGER_u>(), 8);
1043+
assert_eq!(align_of::<ULARGE_INTEGER_u>(), 4);
10401044
assert_eq!(size_of::<LUID>(), 8);
10411045
assert_eq!(align_of::<LUID>(), 4);
10421046
assert_eq!(size_of::<STRING>(), 16);
@@ -8186,14 +8190,6 @@ fn um_winnt() {
81868190
assert_eq!(align_of::<GROUP_AFFINITY>(), 8);
81878191
assert_eq!(size_of::<FLOAT128>(), 16);
81888192
assert_eq!(align_of::<FLOAT128>(), 8);
8189-
assert_eq!(size_of::<LARGE_INTEGER_u>(), 8);
8190-
assert_eq!(align_of::<LARGE_INTEGER_u>(), 4);
8191-
assert_eq!(size_of::<LARGE_INTEGER>(), 8);
8192-
assert_eq!(align_of::<LARGE_INTEGER>(), 8);
8193-
assert_eq!(size_of::<ULARGE_INTEGER_u>(), 8);
8194-
assert_eq!(align_of::<ULARGE_INTEGER_u>(), 4);
8195-
assert_eq!(size_of::<ULARGE_INTEGER>(), 8);
8196-
assert_eq!(align_of::<ULARGE_INTEGER>(), 8);
81978193
assert_eq!(size_of::<LUID>(), 8);
81988194
assert_eq!(align_of::<LUID>(), 4);
81998195
assert_eq!(size_of::<LIST_ENTRY>(), 16);

0 commit comments

Comments
 (0)