#winapi #api-wrapper #api-bindings #process #safety #features #case

no-std fenestroj

Easier wrappers for Win32 API stuff, safe when possible

13 releases

0.0.11 Feb 22, 2020
0.0.10 Feb 22, 2020
0.0.9 Jan 31, 2020
0.0.3 Aug 18, 2019
0.0.2 Jul 22, 2019

#119 in Windows APIs

24 downloads per month
Used in vanadium

Zlib license

89KB
2K SLoC

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

fenestroj

Easier to use wrappers for winapi stuff.

All wrappers are kept in feature gated modules the same as how winapi works.

Conventions

  • Names:
    • Snake case function names: GetLastError becomes get_last_error
    • If there's an A and W variant of a winapi function, the W variant is used without "_w" on the end: GetMessageW becomes get_message
    • Some functions are new utilities to this crate, they just have names that don't conflict with any winapi name.
  • Arguments:
    • Enums are used when possible.
    • If there's some "obvious" default for the user to calculate then Option is sometimes used and it will do the calculation for you.
    • Functions with a large number of arguments are converted to take a single struct with a field for each argument so you don't have to remember the ordering perfectly.
  • Return Values:
    • Usage of bool, Option, or Result is done whenever possible.
    • Numeric codes are given newtype wrappers as often as possible: u32 error values become wrapped in pub struct ErrorCode(pub u32) for example.
  • Safety:
    • Things are all still left as unsafe until a careful investigation of the safety involved can be done.
    • The investigation process is generally "ask WinBun and hope they're not too busy to answer".

Dependencies

~235KB