#Windows #系统调用 #系统 #内联 # #调用 #服务

nightly windows-syscall

为 Rust 提供的 Windows 内联系统调用

4 个版本

0.0.17 2024年4月17日
0.0.16 2024年4月17日

#5 in #调用

Download history 785/week @ 2024-04-07 379/week @ 2024-04-14 12/week @ 2024-04-21

672 每月下载量

MITGPL-3.0 许可证

14KB
144 代码行

windows-syscall: 为 Rust 提供的 Windows syscall 调用

windows-syscall GitHub Actions windows-syscall on crates.io windows-syscall on docs.rs

syscall! 提供了一种类型安全的方式来调用 Windows 系统服务。

可用功能

功能 描述
windows-syscall-typesafe (默认) 宏尝试在死分支中调用提供的函数,确保类型安全(默认启用)。
windows-syscall-use-linked 宏直接调用提供的函数,而不是执行内联系统调用。这仅适用于测试/调试,与直接调用函数等价。

示例

#![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());
}

平台支持

架构
x86_64 (64位)
x86 (32位) ❌ 否 (有需求时)
AArch64 ❌ 否 (有需求时)

此软件包仅实现对 ntoskrnl 服务 的调用,如果您需要 win32k 服务 或其他架构,请 创建问题 并通知我!

软件包版本: 0.0.x 即工作进展中。

依赖项

~22–31MB
~424K SLoC