微軟開(kāi)源 Windows-Drivers-rs,用 Rust 開(kāi)發(fā) Windows 驅(qū)動(dòng)程序
Microsoft Azure 首席技術(shù)官兼著名 Windows 軟件開(kāi)發(fā)人員 Mark Russinovich 在社交平臺(tái)上宣布,啟動(dòng)了一個(gè)名為 windows-drivers-rs 的新開(kāi)源項(xiàng)目。
該項(xiàng)目可幫助開(kāi)發(fā)人員使用 Rust 開(kāi)發(fā) Windows 驅(qū)動(dòng)程序,旨在支持 WDM (Windows Driver Model) 和 WDF (Windows Driver Framework) 驅(qū)動(dòng)程序開(kāi)發(fā)模型。
當(dāng)前版本的資源庫(kù)主要由 Rust crates 組成,具體包括:
- wdk-build:用于配置 Cargo 構(gòu)建腳本以進(jìn)行 WDK 的綁定生成和下游鏈接的庫(kù)。雖然此 crate 的編寫(xiě)目的是靈活地適應(yīng)不同的 WDK 版本和不同的 WDF 版本,但目前僅針對(duì) NI eWDK、KMDF 1.33、UMDF 2.33 和 WDM 驅(qū)動(dòng)程序進(jìn)行了測(cè)試。舊版 DDK 可能缺少鏈接器選項(xiàng)。
- wdk-sys:直接 FFI 綁定到 WDK 中可用的 API。這包括從 bindgen 中自動(dòng)生成的 ffi 綁定,以及包括手動(dòng)重新實(shí)現(xiàn) bindgen 無(wú)法生成的宏。
- wdk:與 WDK 中可用的 API 的安全慣用綁定
- wdk-panic:使用 WDK 構(gòu)建的程序的默認(rèn) panic 處理程序?qū)崿F(xiàn)
- wdk-alloc:對(duì)使用 WDK 編譯的二進(jìn)制文件的分配支持
- wdk-macros:宏的集合,有助于更輕松地與 wdk-sys 的直接綁定進(jìn)行交互。該 crate 通過(guò) wdk-sys 重新導(dǎo)出,并且通常情況下 crates 不需要直接依賴(lài) wdk-macros
具體示例可查看 Windows-rust-driver-samples。
值得注意的是,該項(xiàng)目仍處于早期階段,不建議用于商業(yè)用途;但微軟方面鼓勵(lì)社區(qū)對(duì)該項(xiàng)目的實(shí)驗(yàn)、建議和討論。在 windows-drivers-rs 的開(kāi)發(fā)過(guò)程中,該公司將把 GitHub 討論區(qū)作為與社區(qū)互動(dòng)的主要形式。目前,windows-drivers-rs 項(xiàng)目已得到了微軟開(kāi)發(fā)人員 Melvin Wang 的支持。