#winapi #api-bindings #wrapper #process

无std fenestroj

为Win32 API提供更易用的封装,尽可能保证安全性

13个版本

0.0.11 2020年2月22日
0.0.10 2020年2月22日
0.0.9 2020年1月31日
0.0.3 2019年8月18日
0.0.2 2019年7月22日

#109 in Windows API

每月下载量 44
用于vanadium

Zlib 许可证

89KB
2K SLoC

License:Zlib Minimum Rust Version travis.ci AppVeyor crates.io docs.rs

fenestroj

winapi提供更易用的封装。

所有封装都保持在与winapi相同的方式中,使用功能门控模块。

约定

  • 名称
    • 蛇形函数名:GetLastError变为get_last_error
    • 如果某个winapi函数有A和W变体,则使用W变体,不包含"_w"后缀:GetMessageW变为get_message
    • 一些函数是此crate的新工具,它们的名称不与任何winapi名称冲突。
  • 参数
    • 尽可能使用枚举。
    • 如果有“明显”的默认值供用户计算,则有时使用Option,它将为您执行计算。
    • 具有大量参数的函数被转换为接受单个结构体,其中每个参数都有一个字段,这样您就不必完美地记住顺序。
  • 返回值
    • 尽可能使用boolOptionResult
    • 尽可能将数值代码封装为newtype:例如,错误值u32被封装在pub struct ErrorCode(pub u32)
  • 安全性
    • 所有内容都仍然是unsafe,直到可以进行关于涉及到的安全性的仔细调查。
    • 调查过程通常是“询问WinBun并希望他们不会太忙而无法回答”。

依赖项

~235KB