From f8a698f6723d812b3b3e1d8ab3da6471b92bf7e2 Mon Sep 17 00:00:00 2001 From: bdbai Date: Sun, 7 Aug 2022 16:09:49 +0800 Subject: [PATCH] Fix temporary references for volatile read --- src/ntexapi.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ntexapi.rs b/src/ntexapi.rs index 5fa47c9..d48749d 100644 --- a/src/ntexapi.rs +++ b/src/ntexapi.rs @@ -1,4 +1,6 @@ use core::mem::uninitialized; +#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] +use core::ptr::addr_of; use core::ptr::read_volatile; #[cfg(target_arch = "x86")] use core::sync::atomic::spin_loop_hint; @@ -2780,7 +2782,7 @@ pub const USER_SHARED_DATA: *const KUSER_SHARED_DATA = 0x7ffe0000 as *const _; pub unsafe fn NtGetTickCount64() -> ULONGLONG { let mut tick_count: ULARGE_INTEGER = uninitialized(); #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] { - *tick_count.QuadPart_mut() = read_volatile(&(*USER_SHARED_DATA).u.TickCountQuad); + *tick_count.QuadPart_mut() = read_volatile(addr_of!((*USER_SHARED_DATA).u.TickCountQuad)); } #[cfg(target_arch = "x86")] { loop { @@ -2804,7 +2806,7 @@ pub unsafe fn NtGetTickCount64() -> ULONGLONG { #[inline] pub unsafe fn NtGetTickCount() -> ULONG { #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] { - ((read_volatile(&(*USER_SHARED_DATA).u.TickCountQuad) + ((read_volatile(addr_of!((*USER_SHARED_DATA).u.TickCountQuad)) * (*USER_SHARED_DATA).TickCountMultiplier as u64) >> 24) as u32 } #[cfg(target_arch = "x86")] {