diff --git a/Cargo.lock b/Cargo.lock index 2bf38802..900db897 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,7 +27,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-bindgen", + "windows-targets", ] [[package]] @@ -44,6 +44,7 @@ dependencies = [ "object", "rustc-demangle", "serde", + "windows-targets", ] [[package]] @@ -75,58 +76,21 @@ dependencies = [ "cc", ] -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - [[package]] name = "dylib-dep" version = "0.1.0" -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - [[package]] name = "gimli" version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" @@ -180,38 +144,12 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "rustc-demangle" version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - [[package]] name = "serde" version = "1.0.203" @@ -232,17 +170,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "serde", -] - [[package]] name = "syn" version = "2.0.66" @@ -283,21 +210,65 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-bindgen" -version = "0.56.0" +name = "windows-targets" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28e3ea6330cf17fdcdce8bf08d0549ce93769dca9bedc6c39c36c8c0e17db46" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "proc-macro2", - "rayon", - "serde", - "serde_json", - "syn", - "windows-metadata", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] -name = "windows-metadata" -version = "0.56.0" +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3993f7827fff10c454e3a24847075598c7c08108304b8b07943c2c73d78f3b34" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml index f80a54a4..8fa5f3fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,6 +38,9 @@ cpp_demangle = { default-features = false, version = "0.4.0", optional = true, f "alloc", ] } +[target.'cfg(windows)'.dependencies] +windows-targets = "0.52.6" + [target.'cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))'.dependencies] miniz_oxide = { version = "0.8", default-features = false } addr2line = { version = "0.24.0", default-features = false } diff --git a/bindings.txt b/bindings.txt index 96ee781a..166224b9 100644 --- a/bindings.txt +++ b/bindings.txt @@ -1,5 +1,5 @@ --out src/windows_sys.rs ---config std flatten +--config sys flatten --filter Windows.Win32.Foundation.CloseHandle Windows.Win32.Foundation.FALSE diff --git a/crates/as-if-std/Cargo.toml b/crates/as-if-std/Cargo.toml index d1c705de..a9c29cec 100644 --- a/crates/as-if-std/Cargo.toml +++ b/crates/as-if-std/Cargo.toml @@ -26,9 +26,8 @@ default-features = false optional = true features = ['read_core', 'elf', 'macho', 'pe', 'xcoff', 'unaligned', 'archive'] -[build-dependencies] -# Dependency of the `backtrace` crate -windows-bindgen = "0.56" +[target.'cfg(windows)'.dependencies] +windows-targets = "0.52.6" [features] default = ['backtrace'] diff --git a/src/windows_sys.rs b/src/windows_sys.rs index ead27b47..1e401d5a 100644 --- a/src/windows_sys.rs +++ b/src/windows_sys.rs @@ -1,4 +1,4 @@ -// Bindings generated by `windows-bindgen` 0.57.0 +// Bindings generated by `windows-bindgen` 0.58.0 #![allow( non_snake_case, @@ -7,277 +7,48 @@ dead_code, clippy::all )] -#[link(name = "dbghelp")] -extern "system" { - pub fn EnumerateLoadedModulesW64( - hprocess: HANDLE, - enumloadedmodulescallback: PENUMLOADED_MODULES_CALLBACKW64, - usercontext: *const core::ffi::c_void, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn StackWalk64( - machinetype: u32, - hprocess: HANDLE, - hthread: HANDLE, - stackframe: *mut STACKFRAME64, - contextrecord: *mut core::ffi::c_void, - readmemoryroutine: PREAD_PROCESS_MEMORY_ROUTINE64, - functiontableaccessroutine: PFUNCTION_TABLE_ACCESS_ROUTINE64, - getmodulebaseroutine: PGET_MODULE_BASE_ROUTINE64, - translateaddress: PTRANSLATE_ADDRESS_ROUTINE64, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn StackWalkEx( - machinetype: u32, - hprocess: HANDLE, - hthread: HANDLE, - stackframe: *mut STACKFRAME_EX, - contextrecord: *mut core::ffi::c_void, - readmemoryroutine: PREAD_PROCESS_MEMORY_ROUTINE64, - functiontableaccessroutine: PFUNCTION_TABLE_ACCESS_ROUTINE64, - getmodulebaseroutine: PGET_MODULE_BASE_ROUTINE64, - translateaddress: PTRANSLATE_ADDRESS_ROUTINE64, - flags: u32, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymAddrIncludeInlineTrace(hprocess: HANDLE, address: u64) -> u32; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymFromAddrW( - hprocess: HANDLE, - address: u64, - displacement: *mut u64, - symbol: *mut SYMBOL_INFOW, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymFromInlineContextW( - hprocess: HANDLE, - address: u64, - inlinecontext: u32, - displacement: *mut u64, - symbol: *mut SYMBOL_INFOW, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymFunctionTableAccess64(hprocess: HANDLE, addrbase: u64) -> *mut core::ffi::c_void; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymGetLineFromAddrW64( - hprocess: HANDLE, - dwaddr: u64, - pdwdisplacement: *mut u32, - line: *mut IMAGEHLP_LINEW64, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymGetLineFromInlineContextW( - hprocess: HANDLE, - dwaddr: u64, - inlinecontext: u32, - qwmodulebaseaddress: u64, - pdwdisplacement: *mut u32, - line: *mut IMAGEHLP_LINEW64, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymGetModuleBase64(hprocess: HANDLE, qwaddr: u64) -> u64; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymGetOptions() -> u32; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymGetSearchPathW(hprocess: HANDLE, searchpatha: PWSTR, searchpathlength: u32) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymInitializeW(hprocess: HANDLE, usersearchpath: PCWSTR, finvadeprocess: BOOL) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymQueryInlineTrace( - hprocess: HANDLE, - startaddress: u64, - startcontext: u32, - startretaddress: u64, - curaddress: u64, - curcontext: *mut u32, - curframeindex: *mut u32, - ) -> BOOL; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymSetOptions(symoptions: u32) -> u32; -} -#[link(name = "dbghelp")] -extern "system" { - pub fn SymSetSearchPathW(hprocess: HANDLE, searchpatha: PCWSTR) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn CloseHandle(hobject: HANDLE) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn CreateFileMappingA( - hfile: HANDLE, - lpfilemappingattributes: *const SECURITY_ATTRIBUTES, - flprotect: PAGE_PROTECTION_FLAGS, - dwmaximumsizehigh: u32, - dwmaximumsizelow: u32, - lpname: PCSTR, - ) -> HANDLE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn CreateMutexA( - lpmutexattributes: *const SECURITY_ATTRIBUTES, - binitialowner: BOOL, - lpname: PCSTR, - ) -> HANDLE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn CreateToolhelp32Snapshot( - dwflags: CREATE_TOOLHELP_SNAPSHOT_FLAGS, - th32processid: u32, - ) -> HANDLE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn GetCurrentProcess() -> HANDLE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn GetCurrentProcessId() -> u32; -} -#[link(name = "kernel32")] -extern "system" { - pub fn GetCurrentThread() -> HANDLE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn GetProcAddress(hmodule: HMODULE, lpprocname: PCSTR) -> FARPROC; -} -#[link(name = "kernel32")] -extern "system" { - pub fn LoadLibraryA(lplibfilename: PCSTR) -> HMODULE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn MapViewOfFile( - hfilemappingobject: HANDLE, - dwdesiredaccess: FILE_MAP, - dwfileoffsethigh: u32, - dwfileoffsetlow: u32, - dwnumberofbytestomap: usize, - ) -> MEMORY_MAPPED_VIEW_ADDRESS; -} -#[link(name = "kernel32")] -extern "system" { - pub fn Module32FirstW(hsnapshot: HANDLE, lpme: *mut MODULEENTRY32W) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn Module32NextW(hsnapshot: HANDLE, lpme: *mut MODULEENTRY32W) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn ReleaseMutex(hmutex: HANDLE) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn RtlCaptureContext(contextrecord: *mut CONTEXT); -} +windows_targets::link!("dbghelp.dll" "system" fn EnumerateLoadedModulesW64(hprocess : HANDLE, enumloadedmodulescallback : PENUMLOADED_MODULES_CALLBACKW64, usercontext : *const core::ffi::c_void) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn StackWalk64(machinetype : u32, hprocess : HANDLE, hthread : HANDLE, stackframe : *mut STACKFRAME64, contextrecord : *mut core::ffi::c_void, readmemoryroutine : PREAD_PROCESS_MEMORY_ROUTINE64, functiontableaccessroutine : PFUNCTION_TABLE_ACCESS_ROUTINE64, getmodulebaseroutine : PGET_MODULE_BASE_ROUTINE64, translateaddress : PTRANSLATE_ADDRESS_ROUTINE64) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn StackWalkEx(machinetype : u32, hprocess : HANDLE, hthread : HANDLE, stackframe : *mut STACKFRAME_EX, contextrecord : *mut core::ffi::c_void, readmemoryroutine : PREAD_PROCESS_MEMORY_ROUTINE64, functiontableaccessroutine : PFUNCTION_TABLE_ACCESS_ROUTINE64, getmodulebaseroutine : PGET_MODULE_BASE_ROUTINE64, translateaddress : PTRANSLATE_ADDRESS_ROUTINE64, flags : u32) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymAddrIncludeInlineTrace(hprocess : HANDLE, address : u64) -> u32); +windows_targets::link!("dbghelp.dll" "system" fn SymFromAddrW(hprocess : HANDLE, address : u64, displacement : *mut u64, symbol : *mut SYMBOL_INFOW) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymFromInlineContextW(hprocess : HANDLE, address : u64, inlinecontext : u32, displacement : *mut u64, symbol : *mut SYMBOL_INFOW) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymFunctionTableAccess64(hprocess : HANDLE, addrbase : u64) -> *mut core::ffi::c_void); +windows_targets::link!("dbghelp.dll" "system" fn SymGetLineFromAddrW64(hprocess : HANDLE, dwaddr : u64, pdwdisplacement : *mut u32, line : *mut IMAGEHLP_LINEW64) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymGetLineFromInlineContextW(hprocess : HANDLE, dwaddr : u64, inlinecontext : u32, qwmodulebaseaddress : u64, pdwdisplacement : *mut u32, line : *mut IMAGEHLP_LINEW64) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymGetModuleBase64(hprocess : HANDLE, qwaddr : u64) -> u64); +windows_targets::link!("dbghelp.dll" "system" fn SymGetOptions() -> u32); +windows_targets::link!("dbghelp.dll" "system" fn SymGetSearchPathW(hprocess : HANDLE, searchpatha : PWSTR, searchpathlength : u32) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymInitializeW(hprocess : HANDLE, usersearchpath : PCWSTR, finvadeprocess : BOOL) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymQueryInlineTrace(hprocess : HANDLE, startaddress : u64, startcontext : u32, startretaddress : u64, curaddress : u64, curcontext : *mut u32, curframeindex : *mut u32) -> BOOL); +windows_targets::link!("dbghelp.dll" "system" fn SymSetOptions(symoptions : u32) -> u32); +windows_targets::link!("dbghelp.dll" "system" fn SymSetSearchPathW(hprocess : HANDLE, searchpatha : PCWSTR) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn CloseHandle(hobject : HANDLE) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn CreateFileMappingA(hfile : HANDLE, lpfilemappingattributes : *const SECURITY_ATTRIBUTES, flprotect : PAGE_PROTECTION_FLAGS, dwmaximumsizehigh : u32, dwmaximumsizelow : u32, lpname : PCSTR) -> HANDLE); +windows_targets::link!("kernel32.dll" "system" fn CreateMutexA(lpmutexattributes : *const SECURITY_ATTRIBUTES, binitialowner : BOOL, lpname : PCSTR) -> HANDLE); +windows_targets::link!("kernel32.dll" "system" fn CreateToolhelp32Snapshot(dwflags : CREATE_TOOLHELP_SNAPSHOT_FLAGS, th32processid : u32) -> HANDLE); +windows_targets::link!("kernel32.dll" "system" fn GetCurrentProcess() -> HANDLE); +windows_targets::link!("kernel32.dll" "system" fn GetCurrentProcessId() -> u32); +windows_targets::link!("kernel32.dll" "system" fn GetCurrentThread() -> HANDLE); +windows_targets::link!("kernel32.dll" "system" fn GetProcAddress(hmodule : HMODULE, lpprocname : PCSTR) -> FARPROC); +windows_targets::link!("kernel32.dll" "system" fn LoadLibraryA(lplibfilename : PCSTR) -> HMODULE); +windows_targets::link!("kernel32.dll" "system" fn MapViewOfFile(hfilemappingobject : HANDLE, dwdesiredaccess : FILE_MAP, dwfileoffsethigh : u32, dwfileoffsetlow : u32, dwnumberofbytestomap : usize) -> MEMORY_MAPPED_VIEW_ADDRESS); +windows_targets::link!("kernel32.dll" "system" fn Module32FirstW(hsnapshot : HANDLE, lpme : *mut MODULEENTRY32W) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn Module32NextW(hsnapshot : HANDLE, lpme : *mut MODULEENTRY32W) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn ReleaseMutex(hmutex : HANDLE) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn RtlCaptureContext(contextrecord : *mut CONTEXT)); #[cfg(target_arch = "aarch64")] -#[link(name = "kernel32")] -extern "system" { - pub fn RtlLookupFunctionEntry( - controlpc: usize, - imagebase: *mut usize, - historytable: *mut UNWIND_HISTORY_TABLE, - ) -> *mut IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; -} +windows_targets::link!("kernel32.dll" "system" fn RtlLookupFunctionEntry(controlpc : usize, imagebase : *mut usize, historytable : *mut UNWIND_HISTORY_TABLE) -> *mut IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY); #[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))] -#[link(name = "kernel32")] -extern "system" { - pub fn RtlLookupFunctionEntry( - controlpc: u64, - imagebase: *mut u64, - historytable: *mut UNWIND_HISTORY_TABLE, - ) -> *mut IMAGE_RUNTIME_FUNCTION_ENTRY; -} +windows_targets::link!("kernel32.dll" "system" fn RtlLookupFunctionEntry(controlpc : u64, imagebase : *mut u64, historytable : *mut UNWIND_HISTORY_TABLE) -> *mut IMAGE_RUNTIME_FUNCTION_ENTRY); #[cfg(target_arch = "aarch64")] -#[link(name = "kernel32")] -extern "system" { - pub fn RtlVirtualUnwind( - handlertype: RTL_VIRTUAL_UNWIND_HANDLER_TYPE, - imagebase: usize, - controlpc: usize, - functionentry: *const IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, - contextrecord: *mut CONTEXT, - handlerdata: *mut *mut core::ffi::c_void, - establisherframe: *mut usize, - contextpointers: *mut KNONVOLATILE_CONTEXT_POINTERS_ARM64, - ) -> EXCEPTION_ROUTINE; -} +windows_targets::link!("kernel32.dll" "system" fn RtlVirtualUnwind(handlertype : RTL_VIRTUAL_UNWIND_HANDLER_TYPE, imagebase : usize, controlpc : usize, functionentry : *const IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, contextrecord : *mut CONTEXT, handlerdata : *mut *mut core::ffi::c_void, establisherframe : *mut usize, contextpointers : *mut KNONVOLATILE_CONTEXT_POINTERS) -> EXCEPTION_ROUTINE); #[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))] -#[link(name = "kernel32")] -extern "system" { - pub fn RtlVirtualUnwind( - handlertype: RTL_VIRTUAL_UNWIND_HANDLER_TYPE, - imagebase: u64, - controlpc: u64, - functionentry: *const IMAGE_RUNTIME_FUNCTION_ENTRY, - contextrecord: *mut CONTEXT, - handlerdata: *mut *mut core::ffi::c_void, - establisherframe: *mut u64, - contextpointers: *mut KNONVOLATILE_CONTEXT_POINTERS, - ) -> EXCEPTION_ROUTINE; -} -#[link(name = "kernel32")] -extern "system" { - pub fn UnmapViewOfFile(lpbaseaddress: MEMORY_MAPPED_VIEW_ADDRESS) -> BOOL; -} -#[link(name = "kernel32")] -extern "system" { - pub fn WaitForSingleObjectEx( - hhandle: HANDLE, - dwmilliseconds: u32, - balertable: BOOL, - ) -> WAIT_EVENT; -} -#[link(name = "kernel32")] -extern "system" { - pub fn WideCharToMultiByte( - codepage: u32, - dwflags: u32, - lpwidecharstr: PCWSTR, - cchwidechar: i32, - lpmultibytestr: PSTR, - cbmultibyte: i32, - lpdefaultchar: PCSTR, - lpuseddefaultchar: *mut BOOL, - ) -> i32; -} -#[link(name = "kernel32")] -extern "system" { - pub fn lstrlenW(lpstring: PCWSTR) -> i32; -} +windows_targets::link!("kernel32.dll" "system" fn RtlVirtualUnwind(handlertype : RTL_VIRTUAL_UNWIND_HANDLER_TYPE, imagebase : u64, controlpc : u64, functionentry : *const IMAGE_RUNTIME_FUNCTION_ENTRY, contextrecord : *mut CONTEXT, handlerdata : *mut *mut core::ffi::c_void, establisherframe : *mut u64, contextpointers : *mut KNONVOLATILE_CONTEXT_POINTERS) -> EXCEPTION_ROUTINE); +windows_targets::link!("kernel32.dll" "system" fn UnmapViewOfFile(lpbaseaddress : MEMORY_MAPPED_VIEW_ADDRESS) -> BOOL); +windows_targets::link!("kernel32.dll" "system" fn WaitForSingleObjectEx(hhandle : HANDLE, dwmilliseconds : u32, balertable : BOOL) -> WAIT_EVENT); +windows_targets::link!("kernel32.dll" "system" fn WideCharToMultiByte(codepage : u32, dwflags : u32, lpwidecharstr : PCWSTR, cchwidechar : i32, lpmultibytestr : PSTR, cbmultibyte : i32, lpdefaultchar : PCSTR, lpuseddefaultchar : *mut BOOL) -> i32); +windows_targets::link!("kernel32.dll" "system" fn lstrlenW(lpstring : PCWSTR) -> i32); #[repr(C)] #[derive(Clone, Copy)] pub struct ADDRESS64 { @@ -600,6 +371,31 @@ pub struct KDHELP64 { pub Reserved0: [u64; 2], } #[repr(C)] +#[cfg(target_arch = "aarch64")] +#[derive(Clone, Copy)] +pub struct KNONVOLATILE_CONTEXT_POINTERS { + pub X19: *mut u64, + pub X20: *mut u64, + pub X21: *mut u64, + pub X22: *mut u64, + pub X23: *mut u64, + pub X24: *mut u64, + pub X25: *mut u64, + pub X26: *mut u64, + pub X27: *mut u64, + pub X28: *mut u64, + pub Fp: *mut u64, + pub Lr: *mut u64, + pub D8: *mut u64, + pub D9: *mut u64, + pub D10: *mut u64, + pub D11: *mut u64, + pub D12: *mut u64, + pub D13: *mut u64, + pub D14: *mut u64, + pub D15: *mut u64, +} +#[repr(C)] #[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))] #[derive(Clone, Copy)] pub struct KNONVOLATILE_CONTEXT_POINTERS { @@ -669,31 +465,6 @@ pub struct KNONVOLATILE_CONTEXT_POINTERS { pub Dummy: u32, } #[repr(C)] -#[cfg(target_arch = "aarch64")] -#[derive(Clone, Copy)] -pub struct KNONVOLATILE_CONTEXT_POINTERS_ARM64 { - pub X19: *mut u64, - pub X20: *mut u64, - pub X21: *mut u64, - pub X22: *mut u64, - pub X23: *mut u64, - pub X24: *mut u64, - pub X25: *mut u64, - pub X26: *mut u64, - pub X27: *mut u64, - pub X28: *mut u64, - pub Fp: *mut u64, - pub Lr: *mut u64, - pub D8: *mut u64, - pub D9: *mut u64, - pub D10: *mut u64, - pub D11: *mut u64, - pub D12: *mut u64, - pub D13: *mut u64, - pub D14: *mut u64, - pub D15: *mut u64, -} -#[repr(C)] #[derive(Clone, Copy)] pub struct M128A { pub Low: u64,