There are 5 winapi families:
WINAPI_FAMILY_PC_APP
WINAPI_FAMILY_PHONE_APP
WINAPI_FAMILY_SYSTEM
WINAPI_FAMILY_SERVER
WINAPI_FAMILY_DESKTOP_APP
- A crate that depends on
winapi
should specify the set of winapi families that it supports. - A single winapi family is chosen for an entire project, and the user has control over which family this is.
winapi
is compiled for this family and informs all downstream crates which family it was compiled for so they can configure their code correctly.- If a crate doesn't specify that it supports the current winapi family, compilation should fail early with a nice error message indicating that the crate doesn't support the current winapi family. Otherwise the user would be confronted with confusing error messages about unresolved symbols.