1 #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
3 use winapi
::shared
::basetsd
::{DWORD64, SIZE_T, ULONG64}
;
4 use winapi
::shared
::minwindef
::DWORD
;
5 use winapi
::um
::winnt
::{HANDLE, PVOID}
;
8 pub const fn UInt32x32To64(a
: u32, b
: u32) -> u64 {
11 #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
13 use crate::ntpebteb
::TEB
;
15 #[cfg(target_pointer_width = "64")]
16 pub unsafe fn _bittest64(Base
: *const i64, Offset
: i64) -> u8 {
24 options(nostack
, pure, readonly
),
29 pub unsafe fn __readfsdword(Offset
: DWORD
) -> DWORD
{
32 "mov {:e}, fs:[{:e}]",
35 options(nostack
, pure, readonly
),
40 #[cfg(target_pointer_width = "64")]
41 pub unsafe fn __readgsqword(Offset
: DWORD
) -> DWORD64
{
47 options(nostack
, pure, readonly
),
51 #[inline] #[allow(unused_unsafe)]
52 pub unsafe fn NtCurrentTeb() -> *mut TEB
{
53 use winapi
::um
::winnt
::NT_TIB
;
54 let teb_offset
= FIELD_OFFSET
!(NT_TIB
, _Self
) as u32;
55 #[cfg(target_arch = "x86_64")] {
56 __readgsqword(teb_offset
) as *mut TEB
58 #[cfg(target_arch = "x86")] {
59 __readfsdword(teb_offset
) as *mut TEB
63 ENUM
!{enum MEM_EXTENDED_PARAMETER_TYPE
{
64 MemExtendedParameterInvalidType
= 0,
65 MemExtendedParameterAddressRequirements
= 1,
66 MemExtendedParameterNumaNode
= 2,
67 MemExtendedParameterPartitionHandle
= 3,
68 MemExtendedParameterMax
= 4,
70 pub type PMEM_EXTENDED_PARAMETER_TYPE
= *mut MEM_EXTENDED_PARAMETER_TYPE
;
71 UNION
!{union MEM_EXTENDED_PARAMETER_u
{
78 STRUCT
!{struct MEM_EXTENDED_PARAMETER
{
80 u
: MEM_EXTENDED_PARAMETER_u
,
82 BITFIELD
!{MEM_EXTENDED_PARAMETER BitFields
: ULONG64
[
84 Reserved set_Reserved
[8..64],
86 pub type PMEM_EXTENDED_PARAMETER
= *mut MEM_EXTENDED_PARAMETER
;