summaryrefslogtreecommitdiffstats
path: root/vendor/ntapi/src
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
commit5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch)
tree35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /vendor/ntapi/src
parentAdding debian version 1.66.0+dfsg1-1. (diff)
downloadrustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz
rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/ntapi/src')
-rw-r--r--vendor/ntapi/src/lib.rs19
-rw-r--r--vendor/ntapi/src/ntexapi.rs18
-rw-r--r--vendor/ntapi/src/ntldr.rs2
-rw-r--r--vendor/ntapi/src/ntpsapi.rs26
-rw-r--r--vendor/ntapi/src/ntrtl.rs15
-rw-r--r--vendor/ntapi/src/winapi_local/um/winnt.rs19
6 files changed, 35 insertions, 64 deletions
diff --git a/vendor/ntapi/src/lib.rs b/vendor/ntapi/src/lib.rs
index 6b06b6c57..0f7708cbe 100644
--- a/vendor/ntapi/src/lib.rs
+++ b/vendor/ntapi/src/lib.rs
@@ -3,26 +3,7 @@
//! **`impl-default`** -- Implement [`Default`] for structs and unions.<br/>
//! **`user`** *(default)* -- Link to `ntdll`.<br/>
//! **`kernel`** -- Link to `ntoskrnl` on MSVC targets.<br/>
-//! **`beta`** -- Unlock unstable features that require a beta compiler:
-//! - [`NtCurrentTeb`]
-//! - [`__readfsdword`]
-//! - [`__readgsqword`]
-//! - [`_bittest64`]
-//! - [`NtCurrentPeb`]
-//! - [`NtCurrentProcessId`]
-//! - [`NtCurrentThreadId`]
-//! - [`RtlProcessHeap`]
-//! - [`RtlCheckBit`] implementation using [`_bittest64`] on x86_64.
//!
-//! [`NtCurrentTeb`]: winapi_local/um/winnt/fn.NtCurrentTeb.html
-//! [`__readfsdword`]: winapi_local/um/winnt/fn.__readfsdword.html
-//! [`__readgsqword`]: winapi_local/um/winnt/fn.__readgsqword.html
-//! [`_bittest64`]: winapi_local/um/winnt/fn._bittest64.html
-//! [`NtCurrentPeb`]: ntpsapi/fn.NtCurrentPeb.html
-//! [`NtCurrentProcessId`]: ntpsapi/fn.NtCurrentProcessId.html
-//! [`NtCurrentThreadId`]: ntpsapi/fn.NtCurrentThreadId.html
-//! [`RtlProcessHeap`]: ntrtl/fn.RtlProcessHeap.html
-//! [`RtlCheckBit`]: ntrtl/fn.RtlCheckBit.html
//! [fn_ptr]: https://doc.rust-lang.org/reference/types.html#function-pointer-types
//! [`Default`]: https://doc.rust-lang.org/std/default/trait.Default.html#tymethod.default
#![cfg(all(windows, any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
diff --git a/vendor/ntapi/src/ntexapi.rs b/vendor/ntapi/src/ntexapi.rs
index 5fa47c913..08a0ddf9e 100644
--- a/vendor/ntapi/src/ntexapi.rs
+++ b/vendor/ntapi/src/ntexapi.rs
@@ -1,7 +1,9 @@
-use core::mem::uninitialized;
+use core::mem::MaybeUninit;
+#[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;
+use core::hint::spin_loop;
use crate::ntapi_base::{CLIENT_ID, KPRIORITY, KSYSTEM_TIME, PRTL_ATOM, RTL_ATOM};
use crate::ntioapi::{BUS_DATA_TYPE, FILE_IO_COMPLETION_INFORMATION, INTERFACE_TYPE};
use crate::ntkeapi::{KPROFILE_SOURCE, KTHREAD_STATE, KWAIT_REASON};
@@ -2778,9 +2780,9 @@ pub type PKUSER_SHARED_DATA = *mut KUSER_SHARED_DATA;
pub const USER_SHARED_DATA: *const KUSER_SHARED_DATA = 0x7ffe0000 as *const _;
#[inline]
pub unsafe fn NtGetTickCount64() -> ULONGLONG {
- let mut tick_count: ULARGE_INTEGER = uninitialized();
+ let mut tick_count: ULARGE_INTEGER = MaybeUninit::uninit().assume_init();
#[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 {
@@ -2792,7 +2794,7 @@ pub unsafe fn NtGetTickCount64() -> ULONGLONG {
{
break;
}
- spin_loop_hint();
+ spin_loop();
}
}
(UInt32x32To64(tick_count.s().LowPart, (*USER_SHARED_DATA).TickCountMultiplier) >> 24)
@@ -2804,11 +2806,11 @@ 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")] {
- let mut tick_count: ULARGE_INTEGER = uninitialized();
+ let mut tick_count: ULARGE_INTEGER = MaybeUninit::uninit().assume_init();
loop {
tick_count.s_mut().HighPart = read_volatile(&(*USER_SHARED_DATA).u.TickCount.High1Time)
as u32;
@@ -2818,7 +2820,7 @@ pub unsafe fn NtGetTickCount() -> ULONG {
{
break;
}
- spin_loop_hint();
+ spin_loop();
}
((UInt32x32To64(tick_count.s().LowPart, (*USER_SHARED_DATA).TickCountMultiplier) >> 24)
+ UInt32x32To64(
diff --git a/vendor/ntapi/src/ntldr.rs b/vendor/ntapi/src/ntldr.rs
index 1114dd8e2..4b4bcb629 100644
--- a/vendor/ntapi/src/ntldr.rs
+++ b/vendor/ntapi/src/ntldr.rs
@@ -201,7 +201,7 @@ pub const fn LDR_IS_IMAGEMAPPING(DllHandle: ULONG_PTR) -> bool {
}
#[inline]
pub const fn LDR_IS_RESOURCE(DllHandle: ULONG_PTR) -> bool {
- (LDR_IS_IMAGEMAPPING(DllHandle) | LDR_IS_DATAFILE(DllHandle)) as u8 != 0 //fixme
+ LDR_IS_IMAGEMAPPING(DllHandle) || LDR_IS_DATAFILE(DllHandle)
}
EXTERN!{extern "system" {
fn LdrLoadDll(
diff --git a/vendor/ntapi/src/ntpsapi.rs b/vendor/ntapi/src/ntpsapi.rs
index b2ba28afe..2a0d3cde0 100644
--- a/vendor/ntapi/src/ntpsapi.rs
+++ b/vendor/ntapi/src/ntpsapi.rs
@@ -19,7 +19,7 @@ use winapi::um::winnt::{
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,
PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, PSECURITY_QUALITY_OF_SERVICE,
};
-#[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[cfg(not(target_arch = "aarch64"))]
use crate::winapi_local::um::winnt::NtCurrentTeb;
pub const GDI_HANDLE_BUFFER_SIZE32: usize = 34;
pub const GDI_HANDLE_BUFFER_SIZE64: usize = 60;
@@ -932,7 +932,7 @@ pub const NtCurrentThread: HANDLE = -2isize as *mut c_void;
pub const ZwCurrentThread: HANDLE = NtCurrentThread;
pub const NtCurrentSession: HANDLE = -3isize as *mut c_void;
pub const ZwCurrentSession: HANDLE = NtCurrentSession;
-#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[inline] #[cfg(not(target_arch = "aarch64"))]
pub unsafe fn NtCurrentPeb() -> PPEB {
(*NtCurrentTeb()).ProcessEnvironmentBlock
}
@@ -940,11 +940,11 @@ pub const NtCurrentProcessToken: HANDLE = -4isize as *mut c_void;
pub const NtCurrentThreadToken: HANDLE = -5isize as *mut c_void;
pub const NtCurrentEffectiveToken: HANDLE = -6isize as *mut c_void;
pub const NtCurrentSilo: HANDLE = -1isize as *mut c_void;
-#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[inline] #[cfg(not(target_arch = "aarch64"))]
pub unsafe fn NtCurrentProcessId() -> HANDLE {
(*NtCurrentTeb()).ClientId.UniqueProcess
}
-#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[inline] #[cfg(not(target_arch = "aarch64"))]
pub unsafe fn NtCurrentThreadId() -> HANDLE {
(*NtCurrentTeb()).ClientId.UniqueThread
}
@@ -1121,14 +1121,22 @@ ENUM!{enum PS_ATTRIBUTE_NUM {
}}
#[inline]
pub const fn PsAttributeValue(
- Number: PS_ATTRIBUTE_NUM,
+ mut Number: PS_ATTRIBUTE_NUM,
Thread: bool,
Input: bool,
Additive: bool,
-) -> ULONG_PTR { //fixme
- (Number & PS_ATTRIBUTE_NUMBER_MASK | [0, PS_ATTRIBUTE_THREAD][Thread as usize]
- | [0, PS_ATTRIBUTE_INPUT][Input as usize] | [0, PS_ATTRIBUTE_ADDITIVE][Additive as usize]
- ) as usize
+) -> ULONG_PTR {
+ Number &= PS_ATTRIBUTE_NUMBER_MASK;
+ if Thread {
+ Number |= PS_ATTRIBUTE_THREAD;
+ }
+ if Input {
+ Number |= PS_ATTRIBUTE_INPUT;
+ }
+ if Additive {
+ Number |= PS_ATTRIBUTE_ADDITIVE;
+ }
+ Number as _
}
pub const PS_ATTRIBUTE_PARENT_PROCESS: ULONG_PTR = 0x00060000;
pub const PS_ATTRIBUTE_DEBUG_PORT: ULONG_PTR = 0x00060001;
diff --git a/vendor/ntapi/src/ntrtl.rs b/vendor/ntapi/src/ntrtl.rs
index 9dfa19f7c..abbc3862a 100644
--- a/vendor/ntapi/src/ntrtl.rs
+++ b/vendor/ntapi/src/ntrtl.rs
@@ -2196,7 +2196,7 @@ EXTERN!{extern "system" {
MakeReadOnly: BOOLEAN,
);
}}
-#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[inline] #[cfg(not(target_arch = "aarch64"))]
pub unsafe fn RtlProcessHeap() -> PVOID {
use crate::ntpsapi::NtCurrentPeb;
(*NtCurrentPeb()).ProcessHeap
@@ -2506,7 +2506,7 @@ EXTERN!{extern "system" {
}}
#[inline]
pub const fn RtlIsEqualLuid(L1: &LUID, L2: &LUID) -> bool {
- ((L1.LowPart == L2.LowPart) & (L1.HighPart == L2.HighPart)) as u8 != 0 //fixme
+ (L1.LowPart == L2.LowPart) && (L1.HighPart == L2.HighPart)
}
#[inline]
pub const fn RtlIsZeroLuid(L1: &LUID) -> bool {
@@ -2944,15 +2944,10 @@ EXTERN!{extern "system" {
}}
#[inline]
pub unsafe fn RtlCheckBit(BitMapHeader: &RTL_BITMAP, BitPosition: ULONG) -> u8 {
- #[cfg(all(target_arch = "x86_64", feature = "beta"))] {
- use crate::winapi_local::um::winnt::_bittest64;
- _bittest64(BitMapHeader.Buffer as *const i64, BitPosition as i64)
+ #[cfg(target_arch = "x86_64")] {
+ core::arch::x86_64::_bittest64(BitMapHeader.Buffer as *const i64, BitPosition as i64)
}
- #[cfg(any(
- target_arch = "x86",
- all(target_arch = "x86_64", not(feature = "beta")),
- target_arch = "aarch64",
- ))] {
+ #[cfg(any(target_arch = "x86", target_arch = "aarch64"))] {
(*BitMapHeader.Buffer.offset(BitPosition as isize / 32) >> (BitPosition % 32) & 1) as u8
}
}
diff --git a/vendor/ntapi/src/winapi_local/um/winnt.rs b/vendor/ntapi/src/winapi_local/um/winnt.rs
index 5c4f7b2fb..0c8efb262 100644
--- a/vendor/ntapi/src/winapi_local/um/winnt.rs
+++ b/vendor/ntapi/src/winapi_local/um/winnt.rs
@@ -1,5 +1,3 @@
-#[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
-use core::arch::asm;
use winapi::shared::basetsd::{DWORD64, SIZE_T, ULONG64};
use winapi::shared::minwindef::DWORD;
use winapi::um::winnt::{HANDLE, PVOID};
@@ -8,24 +6,11 @@ use winapi::um::winnt::{HANDLE, PVOID};
pub const fn UInt32x32To64(a: u32, b: u32) -> u64 {
a as u64 * b as u64
}
-#[cfg(all(feature = "beta", not(target_arch = "aarch64")))]
+#[cfg(not(target_arch = "aarch64"))]
IFDEF!{
+use core::arch::asm;
use crate::ntpebteb::TEB;
#[inline]
-#[cfg(target_pointer_width = "64")]
-pub unsafe fn _bittest64(Base: *const i64, Offset: i64) -> u8 {
- let out: u8;
- asm!(
- "bt {1}, {2}",
- "setb {0}",
- out(reg_byte) out,
- in(reg) Base,
- in(reg) Offset,
- options(nostack, pure, readonly),
- );
- out
-}
-#[inline]
pub unsafe fn __readfsdword(Offset: DWORD) -> DWORD {
let out: u32;
asm!(