Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
Rust로 Windows 드라이버를 개발할 수 있게 하는 플랫폼
Platform that enables Windows driver development in Rust
개발 도구GitHub @microsoft직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗This repo is a collection of Rust crates that enable developers to develop Windows Drivers in Rust. It is the intention to support both WDM and WDF driver development models. This repo contains the following crates:
bindgen, and also manual re-implementations of macros that bindgen fails to generate.wdk-sys and crates should typically never need to directly depend on wdk-macrosTo see an example of this repo used to create drivers, see Windows-rust-driver-samples.
Note: This project is still in early stages of development and is not yet recommended for production use. We encourage community experimentation and collaboration through our GitHub Discussions forum!
This project was built with support of WDM, KMDF, and UMDF drivers in mind, as well as Win32 Services. This includes support for all versions of WDF included in WDK 22H2 and newer. Currently, the crates available on crates.io only support KMDF v1.33, but bindings can be generated for everything else by cloning windows-drivers-rs and modifying the config specified in build.rs of wdk-sys. Crates.io support for other WDK configurations is planned in the near future.
Note:: Since the workspace level examples and tests use different WDK configurations, and WDR only supports one WDK configuration per workspace, the workspace-level examples and tests folder are excluded from the repository root's Cargo manifest.
Binding generation via bindgen requires libclang. The easiest way to acquire this is via winget
To execute post-build tasks (ie. inf2cat, infverif, etc.), cargo make is used
cargo install --locked cargo-make --no-default-features --features tls-nativeBuilding programs with the WDK also requires being in a valid WDK environment. The recommended way to do this is to enter an eWDK developer prompt
The crates in this repository are available from crates.io, but take into account the current limitations outlined in Supported Configurations. If you need to support a different config, try cloning this repo and using path dependencies
Create a new Cargo package with a lib crate:
cargo new <driver_name> --lib
Add dependencies on windows-drivers-rs crates:
cd <driver_name>
cargo add --build wdk-build
cargo add wdk wdk-sys wdk-alloc wdk-panic
Set the crate type to cdylib by adding the following snippet to Cargo.toml:
[lib]
crate-type = ["cdylib"]
Add a wdk metadata section and configure the wdk for your use case. This also lets the cargo-make tasks know that the package is a driver and that the driver packaging steps need to run.
UMDF Example:
[package.metadata.wdk.driver-model]
driver-type = "UMDF"
umdf-version-major = 1
target-umdf-version-minor = 33
For Kernel Mode crates (ex. KMDF drivers, WDM drivers): Set crate panic strategy to abort in Cargo.toml:
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
Create a build.rs and add the following snippet:
fn main() -> Result<(), wdk_build::ConfigError> {
wdk_build::configure_wdk_binary_build()
}
For Kernel Mode crates (ex. KMDF drivers, WDM drivers): Mark your driver crate as no_std in lib.rs:
#![no_std]
For Kernel Mode crates (ex. KMDF drivers, WDM drivers): Add a panic handler in lib.rs:
#[cfg(not(test))]
extern crate wdk_panic;
For Kernel Mode crates (ex. KMDF drivers, WDM drivers): Add an optional global allocator in lib.rs:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗