Crate winapi_util

source ·
Expand description

This crate provides a smattering of safe routines for parts of winapi. The primary purpose of this crate is to serve as a dumping ground for various utility functions that make interactions with winapi safe. This permits the centralization of unsafe when dealing with Windows APIs, and thus makes it easier to audit.

A key abstraction in this crate is the combination of the Handle and HandleRef types. Both represent a valid Windows handle to an I/O-like object, where Handle is owned (the resource is closed when the handle is dropped) and HandleRef is borrowed (the resource is not closed when the handle is dropped). Many of the routines in this crate work on handles and accept anything that can be safely converted into a HandleRef. This includes standard library types such as File, Stdin, Stdout and Stderr.

Note that this crate is completely empty on non-Windows platforms.


  • Safe routines for dealing with the Windows console.
  • Safe routines for dealing with files and handles on Windows.
  • Safe routines for querying various Windows specific properties.


  • A handle represents an owned and valid Windows handle to a file-like object.
  • Represents a borrowed and valid Windows handle to a file-like object, such as stdin/stdout/stderr or an actual file.


  • Construct borrowed and valid Windows handles from file-like objects.