该存储库是 Rust crates 的集合,使开发人员能够在 Rust 中开发 Windows 驱动程序。旨在支持 WDM 和 WDF 驱动程序开发模型。该仓库包含以下 crates:
- wdk-build:用于配置 Cargo 构建脚本以进行 WDK 的绑定生成和下游链接的库。虽然此 crate 的编写目的是灵活地适应不同的 WDK 版本和不同的 WDF 版本,但目前仅针对 NI eWDK、KMDF 1.33、UMDF 2.33 和 WDM 驱动程序进行了测试。旧版 DDK 可能缺少链接器选项。
- wdk-sys:直接 FFI 绑定到 WDK 中可用的 API。这包括从
bindgen
中自动生成的 ffi 绑定,以及包括手动重新实现 bindgen 无法生成的宏。 - wdk:与 WDK 中可用的 API 的安全惯用绑定
- wdk-panic:使用 WDK 构建的程序的默认 panic 处理程序实现
- wdk-alloc:对使用 WDK 编译的二进制文件的分配支持
- wdk-macros:宏的集合,有助于更轻松地与 wdk-sys 的直接绑定进行交互。该 crate 通过
wdk-sys
重新导出,并且通常情况下 crates 不需要直接依赖wdk-macros
具体示例可查看 Windows-rust-driver-samples。
该项目仍处于早期阶段,不建议用于商业用途。
支持的配置
该项目在构建时考虑了对 WDM、KMDF 和 UMDF 驱动程序以及 Win32 服务的支持。这包括对 WDK 22H2 及更高版本中包含的所有 WDF 版本的支持。目前,crates.io
上提供的 crates 只支持 KMDF v1.33,但通过克隆windows-drivers-rs
并修改build.rs
of wdk-sys
中指定的配置,可以生成其他所有版本的绑定。Crates.io 计划在不久的将来支持其他 WDK 配置。
评论