MCPcopy Index your code
hub / github.com/BurntSushi/winapi-util

github.com/BurntSushi/winapi-util @0.1.11

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.1.11 ↗ · + Follow
73 symbols 121 edges 5 files 45 documented · 62% updated 10mo ago★ 752 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

winapi-util

This crate provides a smattering of safe wrappers around various parts of the windows-sys crate.

Build status

Dual-licensed under MIT or the UNLICENSE.

Documentation

https://docs.rs/winapi-util

Usage

Run cargo add winapi-util to add this dependency to your Cargo.toml file.

Notes

This crate was born out of frustration with having to write lots of little ffi utility bindings in a variety of crates in order to get Windows support. Eventually, I started needing to copy & paste a lot of those utility routines. Since they are utility routines, they often don't make sense to expose directly in the crate in which they are defined. Instead of continuing this process, I decided to make a crate instead.

Normally, I'm not a huge fan of "utility" crates like this that don't have a well defined scope, but this is primarily a practical endeavor to make it easier to isolate Windows specific ffi code.

While I don't have a long term vision for this crate, I will welcome additional PRs that add more high level routines/types on an as-needed basis.

WARNING: I am not a Windows developer, so extra review to make sure I've got things right is most appreciated.

Naming

This crate was originally born on top of winapi, and thus, it is called winapi-util. As time passed, Microsoft eventually started providing their own official windows and windows-sys crates. As a result, winapi itself got less activity. As the ecosystem moved on to windows-sys, it became clear that winapi-util should too. Thus, its name is now officially historical and not reflective of what it actually does.

Minimum Rust version policy

This crate's minimum supported rustc version is 1.72.0.

The current policy is that the minimum Rust version required to use this crate can be increased in non-breaking version updates. For example, if crate 1.0 requires Rust 1.20.0, then crate 1.0.z for all values of z will also require Rust 1.20.0 or newer. However, crate 1.y for y > 0 may require a newer minimum version of Rust.

In general, this crate will be conservative with respect to the minimum supported version of Rust.

Extension points exported contracts — how you extend this code

AsHandleRef (Interface)
Construct borrowed and valid Windows handles from file-like objects. [10 implementers]
src/win.rs

Core symbols most depended-on inside this repo

as_raw_handle
called by 13
src/win.rs
as_raw
called by 6
src/win.rs
to_fg
called by 4
src/console.rs
handle
called by 3
src/console.rs
set
called by 3
src/console.rs
filetime_to_u64
called by 3
src/file.rs
to_bg
called by 2
src/console.rs
screen_buffer_info
called by 1
src/console.rs

Shape

Method 49
Function 10
Class 9
Enum 4
Interface 1

Languages

Rust100%

Modules by API surface

src/console.rs31 symbols
src/win.rs19 symbols
src/file.rs19 symbols
src/sysinfo.rs4 symbols

For agents

$ claude mcp add winapi-util \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact