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
becomesget_last_error
- If there's an
A
andW
variant of awinapi
function, theW
variant is used without "_w" on the end:GetMessageW
becomesget_message
- Some functions are new utilities to this crate, they just have names that
don't conflict with any
winapi
name.
- Snake case function names:
- 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
, orResult
is done whenever possible. - Numeric codes are given newtype wrappers as often as possible:
u32
error values become wrapped inpub struct ErrorCode(pub u32)
for example.
- Usage of
- 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".
- Things are all still left as