Crates.io | windows-syscall |
lib.rs | windows-syscall |
version | 0.0.17 |
source | src |
created_at | 2024-04-10 08:21:05.362595 |
updated_at | 2024-04-17 12:43:04.681769 |
description | Windows inline syscalls for Rust |
homepage | https://github.com/oberrich/windows-syscall |
repository | https://github.com/oberrich/windows-syscall |
max_upload_size | |
id | 1203253 |
size | 14,895 |
syscall
s for RustThe syscall!
macro provides a type-safe way to invoke a Windows system service.
Feature | Description |
---|---|
windows-syscall-typesafe (default) |
The macro attempts calling the provided function in a dead branch, ensuring type-safety (enabled by default). |
windows-syscall-use-linked |
The macro directly invokes the provided function instead of performing an inline syscall. This is only useful for testing/debugging and is equivalent to directly calling the function. |
#![feature(asm_const, maybe_uninit_uninit_array, maybe_uninit_array_assume_init)]
use phnt::ffi::{NTSTATUS, HANDLE, NtClose, NtTestAlert}; // = "0.0.25"
use windows_syscall::syscall;
fn main() {
const INVALID_HANDLE: HANDLE = core::ptr::null_mut();
assert!(syscall!(NtClose(INVALID_HANDLE)).is_err());
assert!(syscall!(NtTestAlert()).is_ok());
}
Arch | |
---|---|
x86_64 (64-bit) | ✅ Yes |
x86 (32-bit) | ❌ No (on request) |
AArch64 | ❌ No (on request) |
This crate only implements calls to ntoskrnl
services, if you require win32k
services or an additional architecture please create an issue and let me know!
crate version: 0.0.x aka work-in-progress.