/// \[[docs.microsoft.com](https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocesstoken)\] OpenProcessToken
///
/// ### Example
/// ```
/// # use firehazard::*;
/// let token = open_process_token(get_current_process(), token::ALL_ACCESS).unwrap();
/// ```
///
/// ### Errors
/// * `ERROR_INVALID_HANDLE` if `process` wasn't a valid process handle (maybe it was a thread handle?)
/// * `ERROR_ACCESS_DENIED` if the current process/thread token lacks the rights to open the token with `desired_access` (Untrusted integrity, missing SIDs, blocked by DACL, etc.)