Windows驱动开发新时代windows-drivers-rs项目架构深度解析【免费下载链接】windows-drivers-rsPlatform that enables Windows driver development in Rust项目地址: https://gitcode.com/gh_mirrors/wi/windows-drivers-rswindows-drivers-rs是一个创新的Rust crate集合它彻底改变了Windows驱动开发的方式使开发者能够使用Rust语言开发Windows驱动程序。该项目支持WDM和WDF驱动开发模型为驱动开发带来了Rust语言的安全性和现代性。项目核心价值与优势 Rust语言以其内存安全和高性能特性为Windows驱动开发带来了革命性的变化。windows-drivers-rs项目充分利用了Rust的优势解决了传统C/C驱动开发中常见的内存安全问题同时保持了驱动程序所需的高性能。对于新手开发者而言这个项目提供了友好的入门体验和完善的文档支持对于经验丰富的开发者它则提供了强大的工具集和灵活的配置选项大大提高了开发效率。项目架构概览 ️windows-drivers-rs采用模块化设计主要包含以下几个核心组件核心Crates解析wdk-sys提供Windows开发工具包(WDK) API的直接FFI绑定。这包括由bindgen自动生成的FFI绑定以及bindgen无法生成的宏的手动重新实现。wdk提供WDK API的安全惯用绑定使开发者能够以更符合Rust风格的方式使用Windows驱动API。wdk-build一个用于配置Cargo构建脚本的库用于绑定生成和WDK的下游链接。虽然这个crate被设计为对不同的WDK版本和不同的WDF版本具有灵活性但目前仅针对NI eWDK、KMDF 1.33、UMDF 2.33和WDM驱动程序进行了测试。wdk-panic为使用WDK构建的程序提供默认的panic处理程序实现。wdk-alloc为使用Windows开发工具包(WDK)编译的二进制文件提供alloc支持。wdk-macros一组宏帮助简化与wdk-sys直接绑定的交互。这个crate通过wdk-sys重新导出通常不需要直接依赖。项目目录结构项目采用清晰的目录结构便于开发者理解和使用crates包含Cargo工作区的所有主要crates。examples包含工作区级别的示例包括不同类型的最小Windows驱动程序如WDM、KMDF、UMDF。tests包含工作区级别的测试包括对包和工作区中基于元数据的wdk配置的测试。注意由于工作区级别的示例和测试使用不同的WDK配置而WDR仅支持每个工作区一个WDK配置因此工作区级别的示例和测试文件夹被排除在仓库根目录的Cargo清单之外。快速入门指南 系统要求libclang绑定生成需要libclang。获取它的最简单方法是通过wingetwinget install -i LLVM.LLVM --version 17.0.6 --force确保选择GUI选项将LLVM添加到PATH。注意LLVM 18存在一个bug导致ARM64的绑定生成失败建议使用LLVM 17。cargo-make用于执行构建后任务如inf2cat、infverif等cargo install --locked cargo-make --no-default-features --features tls-nativeWDK环境使用WDK构建程序还需要在有效的WDK环境中。推荐的方法是进入eWDK开发者命令提示符。基本使用步骤创建一个新的Cargo包cargo new driver_name --lib添加依赖cd driver_name cargo add --build wdk-build cargo add wdk wdk-sys wdk-alloc wdk-panic设置 crate 类型为cdylib[lib] crate-type [cdylib]添加wdk元数据部分并配置wdk[package.metadata.wdk.driver-model] driver-type UMDF umdf-version-major 1 target-umdf-version-minor 33对于内核模式crates设置crate panic策略为abort[profile.dev] panic abort [profile.release] panic abort创建build.rsfn main() - Result(), wdk_build::ConfigError { wdk_build::configure_wdk_binary_build() }对于内核模式crates在lib.rs中添加必要的代码#![no_std] #[cfg(not(test))] extern crate wdk_panic; #[cfg(not(test))] use wdk_alloc::WdkAllocator; #[cfg(not(test))] #[global_allocator] static GLOBAL_ALLOCATOR: WdkAllocator WdkAllocator; use wdk_sys::{ PDRIVER_OBJECT, NTSTATUS, PCUNICODE_STRING, }; #[unsafe(export_name DriverEntry)] pub unsafe extern system fn driver_entry( driver: PDRIVER_OBJECT, registry_path: PCUNICODE_STRING, ) - NTSTATUS { 0 }添加Makefile.tomlextend target/rust-driver-makefile.toml [config] load_script #!rust //! cargo //! [dependencies] //! wdk-build 0.5.1 //! #![allow(unused_doc_comments)] wdk_build::cargo_make::load_rust_driver_makefile()? 添加与cdylibcrate名称匹配的inx文件。启用静态crt链接例如添加到.cargo/config.toml[build] rustflags [-C, target-featurecrt-static]构建驱动cargo make高级功能与用法 Cargo Make详解cargo-make用于促进使用windows-drivers-rs的构建包括执行构建后驱动打包步骤。要执行默认操作构建和打包驱动cargo make default执行默认任务时只需cargo make也可以因为default任务是隐含的。参数转发windows-drivers-rs扩展了cargo make以将特定参数转发到底层cargo命令。要指定要转发的参数必须在显式指定cargo-make任务名称后提供它们。示例对于特定目标cargo make default --target TARGET TRIPLE对于发布构建cargo make default --release或cargo make default --profile release要指定特定功能cargo make default --features FEATURES要指定特定的rust工具链cargo make default TOOLCHAIN要显示帮助并查看支持的完整CLI参数列表cargo make help驱动包签名验证可以将WDK_BUILD_ENABLE_SIGNTOOL_VERIFY环境变量设置为true以启用处理生成的.sys和.cat文件的签名验证的任务。signtool verify要求证书安装在受信任的根证书颁发机构中此验证才能正常工作。这些任务默认不启用因为WDR的默认行为是使用生成的测试证书进行签名。考虑到安装自己的根证书的安全影响这些测试证书通常只安装在专门用于测试驱动程序的计算机上而不是个人开发机器上。如果您了解这些含义并且已经安装了测试证书则可以按如下方式验证签名cargo make --env WDK_BUILD_ENABLE_SIGNTOOL_VERIFYtrue支持的配置该项目旨在支持WDM、KMDF和UMDF驱动程序以及Win32服务。这包括支持WDK 22H2及更高版本中包含的所有WDF版本。目前crates.io中指定的配置可以为其他所有内容生成绑定。计划在不久的将来支持crates.io上的其他WDK配置。项目示例在examples目录中可以找到WDM、KMDF和UMDF驱动程序的最小示例包括sample-kmdf-driverKMDF驱动示例sample-umdf-driverUMDF驱动示例sample-wdm-driverWDM驱动示例这些示例提供了使用windows-drivers-rs开发不同类型Windows驱动程序的起点。如何获取项目要开始使用windows-drivers-rs您可以通过以下方式获取项目git clone https://gitcode.com/gh_mirrors/wi/windows-drivers-rs仓库中的crates也可以从crates.io获取但要考虑支持的配置中概述的当前限制。如果需要支持不同的配置可以尝试克隆此仓库并使用路径依赖。结语windows-drivers-rs项目为Windows驱动开发带来了Rust语言的强大功能开启了Windows驱动开发的新时代。通过提供安全、高效且易于使用的工具集它降低了驱动开发的门槛同时提高了代码质量和安全性。无论您是经验丰富的驱动开发者还是刚入门的新手这个项目都能为您提供所需的一切让Windows驱动开发变得更加简单和愉快。随着项目的不断发展我们期待看到更多基于windows-drivers-rs的创新驱动程序和应用为Windows平台带来更安全、更可靠的软件体验。【免费下载链接】windows-drivers-rsPlatform that enables Windows driver development in Rust项目地址: https://gitcode.com/gh_mirrors/wi/windows-drivers-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考