标签: rust
我刚开始学习Rust,想知道是否可以在不安全的情况下调用WinAPI函数?
extern crate libc; fn main() { unsafe { libc::funcs::extra::kernel32::GetCurrentProcessId(); } }
答案 0 :(得分:10)
不,这是不可能的,因为它们是外部C库中函数的直接绑定,就像libc crate中的几乎所有其他函数一样。使用像GetCurrentProcessId()这样的函数可能并不明显,但是这些函数 是不安全的,因为有很多函数接受并返回原始指针和以null结尾的字符串。
libc
GetCurrentProcessId()
为了在没有unsafe的情况下调用它们,应该有一个合适的安全包装器,就像任何其他C库一样。据我所知,还没有这样的包装。但是你可以只为你需要的WinAPI函数子集编写一个,它应该不会太难。您可以找到有关如何为外部库here和here编写安全包装的更多详细信息。
unsafe