|
1 | 1 | #![allow(non_snake_case)] |
2 | 2 |
|
| 3 | +// MSRV(1.75): use `offset_of!` when stabilized. |
| 4 | +#[cfg(feature = "nightly")] |
| 5 | +mod nightly; |
| 6 | + |
3 | 7 | use std::alloc::Layout; |
4 | | -use std::mem::size_of; |
5 | 8 | use std::os::raw::{c_ulong, c_ushort}; |
6 | 9 | use std::os::windows::io::RawHandle; |
7 | 10 |
|
8 | | -use windows_sys::core::GUID; |
9 | 11 | pub use windows_sys::Win32::Foundation::{ |
10 | 12 | CloseHandle, GetLastError, SetLastError, ERROR_INSUFFICIENT_BUFFER, FALSE, GENERIC_READ, GENERIC_WRITE, HANDLE, |
11 | 13 | INVALID_HANDLE_VALUE, |
@@ -39,26 +41,18 @@ const _: () = { |
39 | 41 | }; |
40 | 42 |
|
41 | 43 | // NOTE: to use `size_of` operator, below structs should be packed. |
42 | | -// TODO: use `offset_of!` when stabilized. |
43 | 44 | /// Reparse Data Buffer header size |
44 | 45 | pub const REPARSE_DATA_BUFFER_HEADER_SIZE: u16 = 8; |
45 | 46 | /// Reparse GUID Data Buffer header size |
46 | 47 | pub const REPARSE_GUID_DATA_BUFFER_HEADER_SIZE: u16 = 24; |
47 | 48 | /// MountPointReparseBuffer header size |
48 | 49 | pub const MOUNT_POINT_REPARSE_BUFFER_HEADER_SIZE: u16 = 8; |
49 | 50 |
|
50 | | -// Safety checks for correct header size due to the lacks of `offset_of!`. |
51 | | -// MSRV(1.57): for const assert! |
52 | | -#[allow(clippy::no_effect)] // noisy clippy lints |
| 51 | +#[cfg(feature = "nightly")] |
53 | 52 | const _: () = { |
54 | | - let rdb_header_size = size_of::<c_ulong>() + size_of::<c_ushort>() * 2; |
55 | | - [(); 1][!(rdb_header_size == REPARSE_DATA_BUFFER_HEADER_SIZE as _) as usize]; |
56 | | - |
57 | | - let mprb_header_size = size_of::<c_ushort>() * 4; |
58 | | - [(); 1][!(mprb_header_size == MOUNT_POINT_REPARSE_BUFFER_HEADER_SIZE as _) as usize]; |
59 | | - |
60 | | - let rgdb_header_size = size_of::<c_ulong>() + size_of::<c_ushort>() * 2 + size_of::<GUID>(); |
61 | | - [(); 1][!(rgdb_header_size == REPARSE_GUID_DATA_BUFFER_HEADER_SIZE as _) as usize]; |
| 53 | + assert!(REPARSE_DATA_BUFFER_HEADER_SIZE == nightly::REPARSE_DATA_BUFFER_HEADER_SIZE); |
| 54 | + assert!(REPARSE_GUID_DATA_BUFFER_HEADER_SIZE == nightly::REPARSE_GUID_DATA_BUFFER_HEADER_SIZE); |
| 55 | + assert!(MOUNT_POINT_REPARSE_BUFFER_HEADER_SIZE == nightly::MOUNT_POINT_REPARSE_BUFFER_HEADER_SIZE); |
62 | 56 | }; |
63 | 57 |
|
64 | 58 | type VarLenArr<T> = [T; 1]; |
|
0 commit comments