wslpluginapi-sys
is a Rust crate that provides low-level bindings to the Windows Subsystem for Linux (WSL) Plugin API. It offers a direct interface to the functions and structures defined in the WSL Plugin API, facilitating the development of WSL plugins in Rust.
- Comprehensive Bindings: Provides complete bindings to the WSL Plugin API, including structures like
WSLPluginAPIV1
orWSLPluginHooksV1
and other essential components. - Unsafe Abstractions: Direct, unsafe bindings closely mirroring the original C API for maximum control and flexibility.
Before using wslpluginapi-sys
, ensure you have the following installed:
- Rust: Latest stable version.
Add wslpluginapi-sys
to your Cargo.toml
:
[dependencies]
wslpluginapi-sys = "0.1.0-beta.4+2.4.4"
This crate provides unsafe bindings that closely follow the original C API. Users must ensure they uphold the necessary safety invariants when interacting with these bindings. Proper handling of pointers, memory management, and adherence to the API's expected usage patterns are crucial.
This project depends on a third-party dependency called Microsoft.WSL.PluginApi from Microsoft, available on NuGet and providing bindings for it.
To upgrade it, change the version build metadata of the project to the target Microsoft.WSL.PluginApi
version and run cargo xtask bindgen
(don't forget to commit changes generated from the xtask). This xtask download the nuget package and run bindgen on the header to compute a rust file used as binding. This allow offline build with no need of the windows header at build time. All the output of this task is added to a build
folder that need to be commit This folder contain a metadata file and a checksum file.
The information of this metadata file and checksum file are used at build time to detect the path of the binding and check the integrity (corect checksum and version correspondance).
To run this command you require the following dependencies
- llvm
- rustfmt (from rustup)
- Nuget CLI
This project is Licensed under either MIT or Apache-2.0, at your option. See the LICENSE file for details.
Note: This crate is part of the WSLPlugins-rs project, which aims to create an idiomatic Rust framework for developing WSL plugins.