From c89520adc1e09ca8cc641ca4fd1fa9595955bef9 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Thu, 22 Oct 2026 14:32:09 -0700 Subject: [PATCH 01/17] chore: update to oct 2026 windows-drivers-rs release --- Cargo.lock | 240 +++++++++++++++++++++++++++++++++++------------------ Cargo.toml | 9 +- 2 files changed, 167 insertions(+), 82 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7eb6e8a..927e324 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,7 +47,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -58,33 +58,32 @@ checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "bindgen" -version = "0.71.1" +version = "0.73.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +checksum = "787ef8ef523575546b106a58213d6e6b06198a05c2f757258c68a74273670cfa" dependencies = [ "bitflags", "cexpr", "clang-sys", - "itertools", "log", "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", - "shlex", - "syn", + "shlex 2.0.1", + "syn 2.0.109", ] [[package]] @@ -95,27 +94,28 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "camino" -version = "1.1.9" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.7" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" dependencies = [ "serde", + "serde_core", ] [[package]] name = "cargo_metadata" -version = "0.19.2" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" dependencies = [ "camino", "cargo-platform", @@ -132,7 +132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 1.3.0", ] [[package]] @@ -173,9 +173,9 @@ dependencies = [ [[package]] name = "clap-cargo" -version = "0.15.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d546f0e84ff2bfa4da1ce9b54be42285767ba39c688572ca32412a09a73851e5" +checksum = "ac0fb996b5acdd543c8b8ff723c719715d437fdce607ac1fda01c977f568020d" dependencies = [ "anstyle", "clap", @@ -202,7 +202,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -236,7 +236,7 @@ version = "0.1.0" dependencies = [ "once_cell", "uuid", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -252,7 +252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -275,12 +275,12 @@ checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "fs4" -version = "0.13.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" +checksum = "7e72ed92b67c146290f88e9c89d60ca163ea417a446f61ffd7b72df3e7f1dfd5" dependencies = [ "rustix", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -303,9 +303,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" dependencies = [ "either", ] @@ -387,7 +387,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -421,7 +421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.109", ] [[package]] @@ -487,7 +487,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -496,12 +496,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" -[[package]] -name = "ryu" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" - [[package]] name = "scratch" version = "1.0.8" @@ -510,43 +504,55 @@ checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52" [[package]] name = "semver" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde" -version = "1.0.196" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" dependencies = [ "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -564,6 +570,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "smallvec" version = "1.13.1" @@ -587,6 +599,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "thiserror" version = "2.0.12" @@ -604,7 +627,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -636,7 +659,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -707,7 +730,7 @@ checksum = "9881bea7cbe687e36c9ab3b778c36cd0487402e270304e8b1296d5085303c1a2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -719,8 +742,7 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "wdk" version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd496a19ec75c3d98f8be805f62ebde4651fc01babf681b832d8bae9c584d25" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" dependencies = [ "cfg-if", "tracing", @@ -732,8 +754,7 @@ dependencies = [ [[package]] name = "wdk-alloc" version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0000f9d158618c1dce7de647338e8219f9d6b618abd140c373c0552c6dbda1ca" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" dependencies = [ "tracing", "tracing-subscriber", @@ -744,8 +765,7 @@ dependencies = [ [[package]] name = "wdk-build" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c150122a579af759770b354064cd2994d29e97525d904f65ff1412ad5122766" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" dependencies = [ "anyhow", "bindgen", @@ -768,8 +788,7 @@ dependencies = [ [[package]] name = "wdk-macros" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b288d5ef6b276345d197fe0b82ef274dcb5a1f658a2294c67ff85b775f63ee26" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" dependencies = [ "cfg-if", "fs4", @@ -779,20 +798,24 @@ dependencies = [ "scratch", "serde", "serde_json", - "syn", + "syn 2.0.109", ] [[package]] name = "wdk-panic" version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e594cced255434b29bfca586a74653985281377ff4e36b8cfa58fd4c4c63073a" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +dependencies = [ + "tracing", + "tracing-subscriber", + "wdk", + "wdk-build", +] [[package]] name = "wdk-sys" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e13e19ed97609bc1d1236806019309ca2d47aaad6d3217ab374e73c9ff3b8a9" +source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" dependencies = [ "anyhow", "bindgen", @@ -810,47 +833,69 @@ dependencies = [ [[package]] name = "windows" -version = "0.58.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ "windows-core", - "windows-targets", ] [[package]] name = "windows-core" -version = "0.58.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", + "windows-link", "windows-result", "windows-strings", - "windows-targets", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -859,23 +904,32 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core", + "windows-link", +] + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-targets", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-result", - "windows-targets", + "windows-link", ] [[package]] @@ -887,6 +941,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -903,6 +966,15 @@ dependencies = [ "windows_x86_64_msvc", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -950,3 +1022,9 @@ name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/Cargo.toml b/Cargo.toml index dbc4cce..a11d90d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,10 +25,17 @@ panic = "abort" lto = true [workspace.dependencies] -anyhow = "1.0.89" +anyhow = "1.0.103" paste = "1.0.14" wdk = "0.4.1" wdk-alloc = "0.4.1" wdk-build = "0.5.1" wdk-panic = "0.4.1" wdk-sys = "0.5.1" + +[patch.crates-io] +wdk = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } +wdk-alloc = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } +wdk-build = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } +wdk-panic = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } +wdk-sys = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } From cd35006ae8ae581c9e3e95a7f6c79ff9ec646245 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 08:22:44 -0700 Subject: [PATCH 02/17] chore(deps): use published October 2026 WDR crates Replace the windows-drivers-rs main-branch patches with the latest crates.io releases and update the cargo-make loader to wdk-build 0.6.0. Refresh Cargo.lock while retaining bindgen's compatible Syn 2 resolution. --- Cargo.lock | 36 +++++++++++++++++++++--------------- Cargo.toml | 17 +++++------------ Makefile.toml | 2 +- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 927e324..a162abe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -252,7 +252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -387,7 +387,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -487,7 +487,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -741,8 +741,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "wdk" -version = "0.4.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a4be5148364938f4fbebceeb2db8d57c686e9c3282c9851191193eb09160e46" dependencies = [ "cfg-if", "tracing", @@ -753,8 +754,9 @@ dependencies = [ [[package]] name = "wdk-alloc" -version = "0.4.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b694f1faaa8caad4b3b4f9c5875984482ac7c30eacdca06c3f40840d739dc5" dependencies = [ "tracing", "tracing-subscriber", @@ -764,8 +766,9 @@ dependencies = [ [[package]] name = "wdk-build" -version = "0.5.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5c1804e317c1a316c5c8b81df269eaa4df220d03fb6b47315c298f21a592f" dependencies = [ "anyhow", "bindgen", @@ -787,8 +790,9 @@ dependencies = [ [[package]] name = "wdk-macros" -version = "0.5.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c0b7b42d1742fb231a330a86b0b8d035b526f2f63896156f51a2da3d41e381" dependencies = [ "cfg-if", "fs4", @@ -803,8 +807,9 @@ dependencies = [ [[package]] name = "wdk-panic" -version = "0.4.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7bd2b0ef836921f74a7b61bbe90c9b2b76b8fc438d4b1666f3942f667c7b76" dependencies = [ "tracing", "tracing-subscriber", @@ -814,8 +819,9 @@ dependencies = [ [[package]] name = "wdk-sys" -version = "0.5.1" -source = "git+https://github.com/microsoft/windows-drivers-rs?branch=main#c4ae6815484398dc9d28fbe97e6c02d44f9f49a8" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2799500b02cd6362c902412a9d5bed0dee70fa12e61fc90c72372594baee55f" dependencies = [ "anyhow", "bindgen", diff --git a/Cargo.toml b/Cargo.toml index a11d90d..706725d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,15 +27,8 @@ lto = true [workspace.dependencies] anyhow = "1.0.103" paste = "1.0.14" -wdk = "0.4.1" -wdk-alloc = "0.4.1" -wdk-build = "0.5.1" -wdk-panic = "0.4.1" -wdk-sys = "0.5.1" - -[patch.crates-io] -wdk = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } -wdk-alloc = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } -wdk-build = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } -wdk-panic = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } -wdk-sys = { git = "https://github.com/microsoft/windows-drivers-rs", branch = "main" } +wdk = { version = "0.5.0", default-features = false } +wdk-alloc = { version = "0.4.2", default-features = false } +wdk-build = { version = "0.6.0", default-features = false } +wdk-panic = { version = "0.5.0", default-features = false } +wdk-sys = { version = "0.5.2", default-features = false } diff --git a/Makefile.toml b/Makefile.toml index 68891ff..196ba70 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -11,7 +11,7 @@ load_script = ''' #!@rust //! ```cargo //! [dependencies] -//! wdk-build = "0.4.0" +//! wdk-build = "0.6.0" //! ``` #![allow(unused_doc_comments)] From cda61a310b7065187ff52da9c799bd466d4dc93e Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 11:11:37 -0700 Subject: [PATCH 03/17] chore(deps): restore default WDR features --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 706725d..6bdb116 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,8 +27,8 @@ lto = true [workspace.dependencies] anyhow = "1.0.103" paste = "1.0.14" -wdk = { version = "0.5.0", default-features = false } -wdk-alloc = { version = "0.4.2", default-features = false } -wdk-build = { version = "0.6.0", default-features = false } -wdk-panic = { version = "0.5.0", default-features = false } -wdk-sys = { version = "0.5.2", default-features = false } +wdk = "0.5.0" +wdk-alloc = "0.4.2" +wdk-build = "0.6.0" +wdk-panic = "0.5.0" +wdk-sys = "0.5.2" From a291b333b7501c6b8008fb1b87ed166e5ecaa43a Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 20:06:13 -0700 Subject: [PATCH 04/17] style: apply latest nightly rustfmt comment wrapping --- .../echo/kmdf/driver/DriverSync/src/device.rs | 33 ++--- .../echo/kmdf/driver/DriverSync/src/queue.rs | 26 ++-- general/echo/kmdf/exe/src/main.rs | 114 ++++++++++-------- .../kmdf/fail_driver_pool_leak/src/driver.rs | 9 +- 4 files changed, 103 insertions(+), 79 deletions(-) diff --git a/general/echo/kmdf/driver/DriverSync/src/device.rs b/general/echo/kmdf/driver/DriverSync/src/device.rs index 77af6ca..378cf4b 100644 --- a/general/echo/kmdf/driver/DriverSync/src/device.rs +++ b/general/echo/kmdf/driver/DriverSync/src/device.rs @@ -47,8 +47,8 @@ use crate::{ pub fn echo_device_create(mut device_init: &mut WDFDEVICE_INIT) -> NTSTATUS { paged_code!(); - // Register pnp/power callbacks so that we can start and stop the timer as the - // device gets started and stopped. + // Register pnp/power callbacks so that we can start and stop the timer as + // the device gets started and stopped. let mut pnp_power_callbacks = WDF_PNPPOWER_EVENT_CALLBACKS { Size: WDF_PNPPOWER_EVENT_CALLBACKS_SIZE, EvtDeviceSelfManagedIoInit: Some(echo_evt_device_self_managed_io_start), @@ -58,8 +58,8 @@ pub fn echo_device_create(mut device_init: &mut WDFDEVICE_INIT) -> NTSTATUS { ..WDF_PNPPOWER_EVENT_CALLBACKS::default() }; - // Register the PnP and power callbacks. Power policy related callbacks will be - // registered later in SotwareInit. + // Register the PnP and power callbacks. Power policy related callbacks will + // be registered later in SotwareInit. unsafe { call_unsafe_wdf_function_binding!( WdfDeviceInitSetPnpPowerEventCallbacks, @@ -103,10 +103,10 @@ pub fn echo_device_create(mut device_init: &mut WDFDEVICE_INIT) -> NTSTATUS { }; if nt_success(nt_status) { - // Get the device context and initialize it. WdfObjectGet_DEVICE_CONTEXT is an - // inline function generated by WDF_DECLARE_CONTEXT_TYPE macro in the - // device.h header file. This function will do the type checking and return - // the device context. If you pass a wrong object handle + // Get the device context and initialize it. WdfObjectGet_DEVICE_CONTEXT + // is an inline function generated by WDF_DECLARE_CONTEXT_TYPE macro in + // the device.h header file. This function will do the type checking and + // return the device context. If you pass a wrong object handle // it will return NULL and assert if run under framework verifier mode. let device_context: *mut DeviceContext = unsafe { wdf_object_get_device_context(device as WDFOBJECT) }; @@ -162,7 +162,8 @@ extern "C" fn echo_evt_device_self_managed_io_start(device: WDFDEVICE) -> NTSTAT "SYSTEM_TIME_UNITS should fit in i64" ); }; - // Negative marks the value as a relative (rather than absolute) timeout. + // Negative marks the value as a relative (rather than absolute) + // timeout. -(SYSTEM_TIME_UNITS as i64) }; @@ -213,18 +214,18 @@ unsafe extern "C" fn echo_evt_device_self_managed_io_suspend(device: WDFDEVICE) // i/o. We need to do that because framework cannot suspend the device // if there are requests owned by the driver. There are two ways to solve // this issue: 1) We can wait for the outstanding I/O to be complete by the - // periodic timer 2) Register EvtIoStop callback on the queue and acknowledge - // the request to inform the framework that it's okay to suspend the device - // with outstanding I/O. In this sample we will use the 1st approach - // because it's pretty easy to do. We will restart the queue when the - // device is restarted. + // periodic timer 2) Register EvtIoStop callback on the queue and + // acknowledge the request to inform the framework that it's okay to suspend + // the device with outstanding I/O. In this sample we will use the 1st + // approach because it's pretty easy to do. We will restart the queue when + // the device is restarted. let queue = unsafe { call_unsafe_wdf_function_binding!(WdfDeviceGetDefaultQueue, device) }; let queue_context = unsafe { queue_get_context(queue as WDFOBJECT) }; unsafe { call_unsafe_wdf_function_binding!(WdfIoQueueStopSynchronously, queue); - // Stop the watchdog timer and wait for DPC to run to completion if it's already - // fired. + // Stop the watchdog timer and wait for DPC to run to completion if it's + // already fired. let _ = (*queue_context).timer.stop(true); }; diff --git a/general/echo/kmdf/driver/DriverSync/src/queue.rs b/general/echo/kmdf/driver/DriverSync/src/queue.rs index 1439cba..afde22c 100644 --- a/general/echo/kmdf/driver/DriverSync/src/queue.rs +++ b/general/echo/kmdf/driver/DriverSync/src/queue.rs @@ -77,9 +77,10 @@ fn echo_interlocked_increment_floor(target: &AtomicI32, floor: i32) -> i32 { Ordering::SeqCst, Ordering::SeqCst, ) { - // If oldValue == currentValue, then no one updated Target in between - // the deref at the top and the InterlockecCompareExchange afterward - // and we have successfully incremented the value and can exit the loop. + // If oldValue == currentValue, then no one updated Target in + // between the deref at the top and the InterlockecCompareExchange + // afterward and we have successfully incremented the value and can + // exit the loop. Ok(_) => break, Err(v) => current_value = v, } @@ -287,7 +288,8 @@ fn echo_decrement_request_cancel_ownership_count(request_context: *mut RequestCo /// /// * TRUE if the count was incremented, FALSE otherwise fn echo_increment_request_cancel_ownership_count(request_context: *mut RequestContext) -> bool { - // See comments in echo_interlocked_increment_floor as to why <= 1 is failure + // See comments in echo_interlocked_increment_floor as to why <= 1 is + // failure // (unsafe { echo_interlocked_increment_gtzero(&(*request_context).cancel_completion_ownership_count) @@ -498,10 +500,10 @@ extern "C" fn echo_evt_io_read(queue: WDFQUEUE, request: WDFREQUEST, mut length: )] }; - // Mark the request is cancelable. This must be the last thing we do because - // the cancel routine can run immediately after we set it. This means that - // CurrentRequest and CurrentStatus must be initialized before we mark the - // request cancelable. + // Mark the request is cancelable. This must be the last thing we do + // because the cancel routine can run immediately after we set it. This + // means that CurrentRequest and CurrentStatus must be initialized before we + // mark the request cancelable. echo_set_current_request(request, queue); } @@ -623,10 +625,10 @@ extern "C" fn echo_evt_io_write(queue: WDFQUEUE, request: WDFREQUEST, length: us call_unsafe_wdf_function_binding!(WdfRequestSetInformation, request, length as u64); } - // Mark the request is cancelable. This must be the last thing we do because - // the cancel routine can run immediately after we set it. This means that - // CurrentRequest and CurrentStatus must be initialized before we mark the - // request cancelable. + // Mark the request is cancelable. This must be the last thing we do + // because the cancel routine can run immediately after we set it. This + // means that CurrentRequest and CurrentStatus must be initialized before we + // mark the request cancelable. echo_set_current_request(request, queue); } diff --git a/general/echo/kmdf/exe/src/main.rs b/general/echo/kmdf/exe/src/main.rs index 22590d6..4d2685f 100644 --- a/general/echo/kmdf/exe/src/main.rs +++ b/general/echo/kmdf/exe/src/main.rs @@ -134,8 +134,9 @@ Exit the app anytime by pressing Ctrl-C return Err(format!( "Failed to open device. Error {}", // SAFETY: - // - FFI contract: Called immediately after CreateFileW failure before any intervening - // Win32/CRT calls that would overwrite thread-local error slot + // - FFI contract: Called immediately after CreateFileW failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot // - Concurrency: Reads thread-local storage only (no data races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } @@ -151,8 +152,8 @@ Exit the app anytime by pressing Ctrl-C let h = thread::spawn(|| -> Result<(), Box> { async_io(READER_TYPE) }); - // Because async_io error requires Send + Sync but this function does not, - // cannot use ? operator + // Because async_io error requires Send + Sync but this function does + // not, cannot use ? operator #[allow(clippy::question_mark)] if let Err(e) = async_io(WRITER_TYPE) { return Err(e); @@ -218,8 +219,9 @@ fn perform_write_read_test(h_device: HANDLE, test_length: u32) -> Result<(), Box return Err(format!( "PerformWriteReadTest: WriteFile failed: Error {}", // SAFETY: - // - FFI contract: Called immediately after WriteFile failure before any intervening - // Win32/CRT calls that would overwrite thread-local error slot + // - FFI contract: Called immediately after WriteFile failure before + // any intervening Win32/CRT calls that would overwrite + // thread-local error slot // - Concurrency: Reads thread-local storage only (no data races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } @@ -254,8 +256,9 @@ fn perform_write_read_test(h_device: HANDLE, test_length: u32) -> Result<(), Box return Err(format!( "PerformWriteReadTest: ReadFile failed: Error {}", // SAFETY: - // - FFI contract: Called immediately after ReadFile failure before any intervening - // Win32/CRT calls that would overwrite thread-local error slot + // - FFI contract: Called immediately after ReadFile failure before + // any intervening Win32/CRT calls that would overwrite + // thread-local error slot // - Concurrency: Reads thread-local storage only (no data races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } @@ -264,8 +267,8 @@ fn perform_write_read_test(h_device: HANDLE, test_length: u32) -> Result<(), Box } // SAFETY: - // Call set_len on the Vec that contains the buffer used in ReadFile to tell the - // Vec how many bytes were actually put into the Vec + // Call set_len on the Vec that contains the buffer used in ReadFile to tell + // the Vec how many bytes were actually put into the Vec unsafe { read_buffer.set_len(usize::try_from(bytes_returned).unwrap()); } @@ -334,8 +337,9 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { "Cannot open {} error {}", globals.device_path, // SAFETY: - // - FFI contract: Called immediately after CreateFileW failure before any intervening - // Win32/CRT calls that would overwrite thread-local error slot + // - FFI contract: Called immediately after CreateFileW failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot // - Concurrency: Reads thread-local storage only (no data races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } @@ -344,8 +348,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { } // SAFETY: - // Call Win32 API FFI CreateIoCompletionPort to get handle for completing async - // requests + // Call Win32 API FFI CreateIoCompletionPort to get handle for completing + // async requests unsafe { h_completion_port = CreateIoCompletionPort( h_device, @@ -359,8 +363,9 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { return Err(format!( "Cannot open completion port {}", // SAFETY: - // - FFI contract: Called immediately after CreateIoCompletionPort failure before any - // intervening Win32/CRT calls that would overwrite thread-local error slot + // - FFI contract: Called immediately after CreateIoCompletionPort + // failure before any intervening Win32/CRT calls that would + // overwrite thread-local error slot // - Concurrency: Reads thread-local storage only (no data races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } @@ -397,7 +402,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { for i in 0..max_pending_requests { // SAFETY: - // Get the offset into the buffer for sending data at offset for request 'i' + // Get the offset into the buffer for sending data at offset for request + // 'i' let buffer_offset = unsafe { (buf.as_mut_ptr() .offset(isize::try_from(i * BUFFER_SIZE).unwrap())) @@ -405,14 +411,15 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { }; // SAFETY: - // Get the pointer for the list of Overlapped array for ReadFile at the offset - // for request 'i' + // Get the pointer for the list of Overlapped array for ReadFile at the + // offset for request 'i' let overlap_struct_offset = unsafe { ov_list.as_mut_ptr().offset(isize::try_from(i).unwrap()) }; if io_type == READER_TYPE { // SAFETY: - // Call Win32 API FFI ReadFile to read from driver with an overlap option + // Call Win32 API FFI ReadFile to read from driver with an overlap + // option unsafe { r = ReadFile( h_device, @@ -425,9 +432,11 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { if r == FALSE { // SAFETY: - // - FFI contract: Called immediately after ReadFile failure before any - // intervening Win32/CRT calls that would overwrite thread-local error slot - // - Concurrency: Reads thread-local storage only (no data races) + // - FFI contract: Called immediately after ReadFile failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot + // - Concurrency: Reads thread-local storage only (no data + // races) // - Memory safety: Returns u32 value (no pointer dereferences) let error = unsafe { GetLastError() }; if error != ERROR_IO_PENDING { @@ -436,7 +445,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { } } else { // SAFETY: - // Call Win32 API FFI WriteFile to write to driver with an overlap option + // Call Win32 API FFI WriteFile to write to driver with an overlap + // option unsafe { let mut number_of_bytes_written: u32 = 0; @@ -451,9 +461,11 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { if r == FALSE { // SAFETY: - // - FFI contract: Called immediately after WriteFile failure before any - // intervening Win32/CRT calls that would overwrite thread-local error slot - // - Concurrency: Reads thread-local storage only (no data races) + // - FFI contract: Called immediately after WriteFile failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot + // - Concurrency: Reads thread-local storage only (no data + // races) // - Memory safety: Returns u32 value (no pointer dereferences) let error = unsafe { GetLastError() }; if error != ERROR_IO_PENDING { @@ -469,8 +481,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { let mut completed_ov_ptr: *mut OVERLAPPED = std::ptr::null_mut(); // SAFETY: - // Call Win32 API FFI GetQueuedCompletionStatus to access the status of the - // completion request + // Call Win32 API FFI GetQueuedCompletionStatus to access the status of + // the completion request unsafe { r = GetQueuedCompletionStatus( h_completion_port, @@ -485,10 +497,12 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { return Err(format!( "GetQueuedCompletionStatus failed {}", // SAFETY: - // - FFI contract: Called immediately after GetQueuedCompletionStatus failure - // before any intervening Win32/CRT calls that would overwrite thread-local error + // - FFI contract: Called immediately after + // GetQueuedCompletionStatus failure before any intervening + // Win32/CRT calls that would overwrite thread-local error // slot - // - Concurrency: Reads thread-local storage only (no data races) + // - Concurrency: Reads thread-local storage only (no data + // races) // - Memory safety: Returns u32 value (no pointer dereferences) unsafe { GetLastError() } ) @@ -498,9 +512,9 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { let i; // SAFETY: - // Perform pointer math to determine which index 'i' to use by determining the - // offset of 'completed_ov_ptr' from the start of the array given by - // 'ov_list' + // Perform pointer math to determine which index 'i' to use by + // determining the offset of 'completed_ov_ptr' from the start of the + // array given by 'ov_list' unsafe { i = completed_ov_ptr.offset_from(ov_list.as_ptr()); } @@ -524,7 +538,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { let buffer_offset; // SAFETY: - // Get the offset into the buffer for reading data at offset for request 'i' + // Get the offset into the buffer for reading data at offset for + // request 'i' unsafe { buffer_offset = (buf .as_mut_ptr() @@ -546,9 +561,11 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { if r == FALSE { // SAFETY: - // - FFI contract: Called immediately after ReadFile failure before any - // intervening Win32/CRT calls that would overwrite thread-local error slot - // - Concurrency: Reads thread-local storage only (no data races) + // - FFI contract: Called immediately after ReadFile failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot + // - Concurrency: Reads thread-local storage only (no data + // races) // - Memory safety: Returns u32 value (no pointer dereferences) let error = unsafe { GetLastError() }; if error != ERROR_IO_PENDING { @@ -576,7 +593,8 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { let buffer_offset; // SAFETY: - // Get the offset into the buffer for sending data at offset for request 'i' + // Get the offset into the buffer for sending data at offset for + // request 'i' unsafe { buffer_offset = (buf .as_mut_ptr() @@ -598,9 +616,11 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { if r == FALSE { // SAFETY: - // - FFI contract: Called immediately after WriteFile failure before any - // intervening Win32/CRT calls that would overwrite thread-local error slot - // - Concurrency: Reads thread-local storage only (no data races) + // - FFI contract: Called immediately after WriteFile failure + // before any intervening Win32/CRT calls that would overwrite + // thread-local error slot + // - Concurrency: Reads thread-local storage only (no data + // races) // - Memory safety: Returns u32 value (no pointer dereferences) let error = unsafe { GetLastError() }; if error != ERROR_IO_PENDING { @@ -641,8 +661,8 @@ fn get_device_path(interface_guid: &Uuid) -> Result<(), Box> { guid.data4 = *guid_data4; // SAFETY: - // Call Win32 API FFI CM_Get_Device_Interface_List_SizeW to determine size of - // space needed for a subsequent request + // Call Win32 API FFI CM_Get_Device_Interface_List_SizeW to determine size + // of space needed for a subsequent request unsafe { config_ret = DeviceAndDriverInstallation::CM_Get_Device_Interface_List_SizeW( &mut device_interface_list_length, @@ -668,8 +688,8 @@ fn get_device_path(interface_guid: &Uuid) -> Result<(), Box> { let buffer_ptr = buffer.as_mut_ptr(); // SAFETY: - // Call Win32 API FFI CM_Get_Device_Interface_ListW to get the list of Device - // Interfaces that match the Interface GUID for the echo driver + // Call Win32 API FFI CM_Get_Device_Interface_ListW to get the list of + // Device Interfaces that match the Interface GUID for the echo driver unsafe { config_ret = DeviceAndDriverInstallation::CM_Get_Device_Interface_ListW( &guid, diff --git a/tools/dv/kmdf/fail_driver_pool_leak/src/driver.rs b/tools/dv/kmdf/fail_driver_pool_leak/src/driver.rs index 2fcfbb1..9e05f51 100644 --- a/tools/dv/kmdf/fail_driver_pool_leak/src/driver.rs +++ b/tools/dv/kmdf/fail_driver_pool_leak/src/driver.rs @@ -60,8 +60,8 @@ extern "system" fn driver_entry( { const WDF_DRIVER_CONFIG_SIZE: usize = core::mem::size_of::(); - // Manually assert there is not truncation since clippy doesn't work for - // compile-time constants + // Manually assert there is not truncation since clippy doesn't work + // for compile-time constants const { assert!(WDF_DRIVER_CONFIG_SIZE <= ULONG::MAX as usize) } wdf_driver_config_size = WDF_DRIVER_CONFIG_SIZE as ULONG; @@ -187,8 +187,9 @@ extern "C" fn evt_driver_unload(_driver: WDFDRIVER) { println!("Enter: evt_driver_unload"); // Ideally, the memory allocated to the Global buffer in lib.rs L51 should - // be freed here by calling the ExFreePool API. But to demonstrate the Driver - // Verifier's ability to catch pool leaks, the buffer is deliberately not freed. + // be freed here by calling the ExFreePool API. But to demonstrate the + // Driver Verifier's ability to catch pool leaks, the buffer is deliberately + // not freed. // unsafe { wdk_sys::ntddk::ExFreePool(GLOBAL_BUFFER) }; From 6ad50474cb1db9439d7ee28dd9ca21369cf3c0fc Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 20:06:28 -0700 Subject: [PATCH 05/17] fix(deps): pin serde to 1.0.228 to avoid duplicate syn versions serde_derive 1.0.229 moved to syn 3 while bindgen, wdk-macros and clap_derive are still on syn 2, which trips clippy's multiple_crate_versions lint. --- Cargo.lock | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a162abe..45acafe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -83,7 +83,7 @@ dependencies = [ "regex", "rustc-hash", "shlex 2.0.1", - "syn 2.0.109", + "syn", ] [[package]] @@ -202,7 +202,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] @@ -421,7 +421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.109", + "syn", ] [[package]] @@ -514,9 +514,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -524,22 +524,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 3.0.9", + "syn", ] [[package]] @@ -599,17 +599,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn" -version = "3.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "thiserror" version = "2.0.12" @@ -627,7 +616,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] @@ -659,7 +648,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] @@ -730,7 +719,7 @@ checksum = "9881bea7cbe687e36c9ab3b778c36cd0487402e270304e8b1296d5085303c1a2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] @@ -802,7 +791,7 @@ dependencies = [ "scratch", "serde", "serde_json", - "syn 2.0.109", + "syn", ] [[package]] @@ -890,7 +879,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] @@ -901,7 +890,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.109", + "syn", ] [[package]] From 857c35cb97c9026d5a19e676ed7b81fe6359ec5c Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 20:06:29 -0700 Subject: [PATCH 06/17] ci: shorten rust-script build-dir to avoid LNK1104 Cargo's build-dir layout v2 nests rust-script's long package name twice, pushing the cargo-make load_script binary past MAX_PATH. Point build-dir at a short path via a rust-script-scoped cargo config so driver builds, which rely on OUT_DIR being under the workspace, are unaffected. --- .github/workflows/build.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 601c12d..3d461bd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -106,6 +106,19 @@ jobs: with: tool: cargo-make + # Cargo's build-dir layout v2 nests rust-script's long package name twice, + # pushing the cargo-make load_script binary past MAX_PATH (LNK1104). + # rust-script runs cargo from %LOCALAPPDATA%\rust-script\projects\, so + # this config shortens build-dir for rust-script builds only. A global + # build-dir would break wdk-build, which looks for Cargo.lock above OUT_DIR. + - name: Shorten rust-script build-dir + run: | + $configDir = Join-Path ([Environment]::GetFolderPath('LocalApplicationData')) 'rust-script\.cargo' + New-Item -ItemType Directory -Force $configDir | Out-Null + $buildDir = (Join-Path $env:RUNNER_TEMP 'rsb') -replace '\\', '/' + Set-Content (Join-Path $configDir 'config.toml') "[build]`nbuild-dir = '$buildDir'" + shell: pwsh + - name: Build and Package Sample Drivers # Unset RUSTFLAGS for cargo-make to work around RUSTFLAGS leaking into # rust-script compilation of wdk-build (path dep via symlink defeats From d2d9644fa2f993744cb1c96712a7151e4d780dce Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Tue, 27 Oct 2026 20:43:39 -0700 Subject: [PATCH 07/17] ci: clarify LNK1104 path length comment --- .github/workflows/build.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3d461bd..d14119f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -107,7 +107,9 @@ jobs: tool: cargo-make # Cargo's build-dir layout v2 nests rust-script's long package name twice, - # pushing the cargo-make load_script binary past MAX_PATH (LNK1104). + # pushing the cargo-make load_script binary's output path past 260 + # characters (MAX_PATH). MSVC's link.exe does not support longer paths, + # so linking fails with LNK1104 (cannot open file). # rust-script runs cargo from %LOCALAPPDATA%\rust-script\projects\, so # this config shortens build-dir for rust-script builds only. A global # build-dir would break wdk-build, which looks for Cargo.lock above OUT_DIR. From 171423583c0a1b4dc0b14712f4a1a2191703ffee Mon Sep 17 00:00:00 2001 From: Dan Fiedler Date: Wed, 7 Oct 2026 18:09:18 -0400 Subject: [PATCH 08/17] Pin GitHub Actions to full-length commit SHAs --- .github/dependabot.yaml | 2 ++ .github/workflows/build.yaml | 6 +++--- .github/workflows/cargo-audit.yaml | 4 ++-- .github/workflows/code-formatting-check.yaml | 10 +++++----- .github/workflows/docs.yaml | 6 +++--- .github/workflows/github-dependency-review.yaml | 4 ++-- .github/workflows/lint.yaml | 12 ++++++------ 7 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 160de36..38f4c3c 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -25,3 +25,5 @@ updates: labels: - "type:dependabot" - "type:dependencies-github-actions" + cooldown: + default-days: 7 \ No newline at end of file diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d14119f..ac5c92b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -56,10 +56,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: repository: microsoft/windows-drivers-rs ref: main @@ -92,7 +92,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@master + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 with: toolchain: ${{ matrix.rust_toolchain }} targets: ${{ matrix.target_triple.name }} diff --git a/.github/workflows/cargo-audit.yaml b/.github/workflows/cargo-audit.yaml index 54627a8..23be12a 100644 --- a/.github/workflows/cargo-audit.yaml +++ b/.github/workflows/cargo-audit.yaml @@ -24,9 +24,9 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Run Cargo Audit - uses: rustsec/audit-check@v1 + uses: rustsec/audit-check@e9159ac5f7d7d873ce074ca134da2f445c0a4a61 # v1.3.2 with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/code-formatting-check.yaml b/.github/workflows/code-formatting-check.yaml index 0860f17..48a4181 100644 --- a/.github/workflows/code-formatting-check.yaml +++ b/.github/workflows/code-formatting-check.yaml @@ -18,10 +18,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Install Rust Toolchain (Nightly) - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 with: components: rustfmt @@ -34,16 +34,16 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Install Rust Toolchain (Stable) - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 # Using cache-cargo-install-action to cache the compiled binary. # Once taplo ships a release with field-level `keys` matching, this can # be simplified back to install-action with a normal version pin. - name: Install taplo-cli from pinned revision b673b44d - uses: taiki-e/cache-cargo-install-action@v3 + uses: taiki-e/cache-cargo-install-action@9ee83daaa7b96a6fab930949ecf1122bba04a389 # v3.0.8 with: tool: taplo-cli git: https://github.com/tamasfe/taplo diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index fec6a36..905440e 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -54,10 +54,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: repository: microsoft/windows-drivers-rs ref: main @@ -90,7 +90,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@master + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 with: toolchain: ${{ matrix.rust_toolchain }} targets: ${{ matrix.target_triple.name }} diff --git a/.github/workflows/github-dependency-review.yaml b/.github/workflows/github-dependency-review.yaml index 436d0bb..a6162f2 100644 --- a/.github/workflows/github-dependency-review.yaml +++ b/.github/workflows/github-dependency-review.yaml @@ -19,10 +19,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Dependency Review - uses: actions/dependency-review-action@v4 + uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0 with: allow-licenses: >- MIT, diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index a8d6f21..e743e54 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -52,10 +52,10 @@ jobs: runs-on: ${{ matrix.runner.name }} steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: repository: microsoft/windows-drivers-rs ref: main @@ -88,7 +88,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@master + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 with: toolchain: ${{ matrix.rust_toolchain }} components: clippy @@ -110,10 +110,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: repository: microsoft/windows-drivers-rs ref: main @@ -127,7 +127,7 @@ jobs: run: Copy-Item -Recurse -Force _temp/windows-drivers-rs/.github/actions .github/ - name: Install Rust Toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 - name: Install Cargo Machete uses: ./.github/actions/install-cargo-tool From 7234124d99eb3f5ca1f8dbcd866cee54b63ce38b Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Wed, 28 Oct 2026 08:09:25 -0700 Subject: [PATCH 09/17] ci: refresh pinned actions and pass explicit Rust toolchains Bump the pinned actions to their latest releases: checkout v7.0.1, dependency-review-action v5.0.0, audit-check v2.0.0, and the latest dtolnay/rust-toolchain v1 commit. A SHA-pinned dtolnay/rust-toolchain no longer derives the toolchain from its ref name, so the former @stable and @nightly steps now pass toolchain explicitly. --- .github/workflows/build.yaml | 6 +++--- .github/workflows/cargo-audit.yaml | 4 ++-- .github/workflows/code-formatting-check.yaml | 11 +++++++---- .github/workflows/docs.yaml | 6 +++--- .github/workflows/github-dependency-review.yaml | 4 ++-- .github/workflows/lint.yaml | 14 ++++++++------ 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ac5c92b..b106565 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -56,10 +56,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: microsoft/windows-drivers-rs ref: main @@ -92,7 +92,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 with: toolchain: ${{ matrix.rust_toolchain }} targets: ${{ matrix.target_triple.name }} diff --git a/.github/workflows/cargo-audit.yaml b/.github/workflows/cargo-audit.yaml index 23be12a..67550c0 100644 --- a/.github/workflows/cargo-audit.yaml +++ b/.github/workflows/cargo-audit.yaml @@ -24,9 +24,9 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run Cargo Audit - uses: rustsec/audit-check@e9159ac5f7d7d873ce074ca134da2f445c0a4a61 # v1.3.2 + uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/code-formatting-check.yaml b/.github/workflows/code-formatting-check.yaml index 48a4181..ff7027b 100644 --- a/.github/workflows/code-formatting-check.yaml +++ b/.github/workflows/code-formatting-check.yaml @@ -18,11 +18,12 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust Toolchain (Nightly) - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 with: + toolchain: nightly components: rustfmt - name: Run Cargo Format @@ -34,10 +35,12 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust Toolchain (Stable) - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 + with: + toolchain: stable # Using cache-cargo-install-action to cache the compiled binary. # Once taplo ships a release with field-level `keys` matching, this can diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 905440e..ed67d80 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -54,10 +54,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: microsoft/windows-drivers-rs ref: main @@ -90,7 +90,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 with: toolchain: ${{ matrix.rust_toolchain }} targets: ${{ matrix.target_triple.name }} diff --git a/.github/workflows/github-dependency-review.yaml b/.github/workflows/github-dependency-review.yaml index a6162f2..a478c33 100644 --- a/.github/workflows/github-dependency-review.yaml +++ b/.github/workflows/github-dependency-review.yaml @@ -19,10 +19,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Dependency Review - uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0 + uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0 with: allow-licenses: >- MIT, diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index e743e54..7d7c4d7 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -52,10 +52,10 @@ jobs: runs-on: ${{ matrix.runner.name }} steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: microsoft/windows-drivers-rs ref: main @@ -88,7 +88,7 @@ jobs: target: ${{ matrix.wdk.source == 'nuget' && matrix.target_triple.arch || '' }} - name: Install Rust Toolchain (${{ matrix.rust_toolchain }}) - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 with: toolchain: ${{ matrix.rust_toolchain }} components: clippy @@ -110,10 +110,10 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Checkout windows-drivers-rs actions - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: microsoft/windows-drivers-rs ref: main @@ -127,7 +127,9 @@ jobs: run: Copy-Item -Recurse -Force _temp/windows-drivers-rs/.github/actions .github/ - name: Install Rust Toolchain - uses: dtolnay/rust-toolchain@7e38f4b43b4db5c8dd498af069a4f6196df1d067 # v1 + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # v1 + with: + toolchain: stable - name: Install Cargo Machete uses: ./.github/actions/install-cargo-tool From 139682034bc3bb80c0ba62f8ffbc500f4144be21 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Wed, 28 Oct 2026 08:09:26 -0700 Subject: [PATCH 10/17] chore: group Dependabot updates and stagger weekly runs Mirror the windows-drivers-rs Dependabot configuration. Cargo updates are grouped per dependency name, and minor and patch GitHub Actions updates are batched into one PR while major upgrades stay separate. Cargo updates run Tuesdays and Actions updates run Thursdays, both at 23:00 UTC, 12 hours apart from the daily 11:00 UTC CI runs. --- .github/dependabot.yaml | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 38f4c3c..5982d70 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -1,12 +1,18 @@ version: 2 updates: - package-ecosystem: "cargo" - directory: "/" + directories: ["**/*"] + groups: + # Create one repo-wide PR per Cargo dependency name, + # combining all its manifest and lockfile updates. + per-dependency: + group-by: dependency-name schedule: interval: "weekly" - day: "wednesday" - timezone: "America/Los_Angeles" - time: "06:00" + day: "tuesday" + timezone: "Etc/UTC" + time: "23:00" + open-pull-requests-limit: 10 commit-message: prefix: "chore" labels: @@ -15,11 +21,21 @@ updates: - package-ecosystem: "github-actions" directory: "/" + groups: + # Combine minor and patch updates for all actions into one PR. + # Leave major upgrades ungrouped for individual review. + actions-minor-patch: + patterns: + - "*" + update-types: + - "minor" + - "patch" schedule: interval: "weekly" - day: "wednesday" - timezone: "America/Los_Angeles" - time: "06:00" + day: "thursday" + timezone: "Etc/UTC" + time: "23:00" + open-pull-requests-limit: 10 commit-message: prefix: "chore" labels: From 35b50588aec905714033baac0f6c122aa1069bc4 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Wed, 28 Oct 2026 08:09:27 -0700 Subject: [PATCH 11/17] chore(deps): refresh Cargo dependencies Raise the anyhow, paste, once_cell, uuid, and windows-sys requirements to their latest releases and refresh the lockfile. windows-sys 0.61 moves BOOL to windows_sys::core, so echoapp imports it from there. Syn stays at 2.0.119 for everything built on Windows; bindgen's prettyplease, clap, serde, and thiserror remain at their latest Syn 2 releases, matching windows-drivers-rs. Syn 3 only appears in the lockfile through uuid's wasm32-only wasm-bindgen dependency. --- Cargo.lock | 415 +++++++++++++++--------------- Cargo.toml | 4 +- general/echo/kmdf/exe/Cargo.toml | 6 +- general/echo/kmdf/exe/src/main.rs | 52 ++-- 4 files changed, 246 insertions(+), 231 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 45acafe..34b0a5f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -28,37 +28,37 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.59.0", + "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -82,15 +82,21 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex 2.0.1", - "syn", + "shlex", + "syn 2.0.119", ] [[package]] name = "bitflags" -version = "2.4.2" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "camino" @@ -127,12 +133,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.45" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +checksum = "86e055fa6e3e40ad6187ba25b6855eeb635d5271f8e0f0e1e9a5826b8d75bea0" dependencies = [ "find-msvc-tools", - "shlex 1.3.0", + "shlex", ] [[package]] @@ -146,15 +152,15 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" dependencies = [ "glob", "libc", @@ -163,9 +169,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "0fb99565819980999fb7b4a1796046a5c949e6d4ff132cf5fadf5a641e20d776" dependencies = [ "clap_builder", "clap_derive", @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" dependencies = [ "anstream", "anstyle", @@ -195,27 +201,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "32f2392eae7f16557a3d727ef3a12e57b2b2ca6f98566a5f4fb41ffe305df077" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "echo-2" @@ -236,14 +242,14 @@ version = "0.1.0" dependencies = [ "once_cell", "uuid", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] name = "either" -version = "1.10.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "errno" @@ -252,7 +258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -269,9 +275,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" [[package]] name = "fs4" @@ -280,14 +286,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e72ed92b67c146290f88e9c89d60ca163ea417a446f61ffd7b72df3e7f1dfd5" dependencies = [ "rustix", - "windows-sys 0.61.2", + "windows-sys", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", ] [[package]] name = "glob" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "heck" @@ -312,21 +342,32 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "js-sys" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.191" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a" [[package]] name = "libloading" @@ -340,15 +381,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.20" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "matchers" @@ -361,9 +402,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -387,14 +428,14 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -410,43 +451,43 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.119", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -456,9 +497,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -467,40 +508,40 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "e5e76742e5294153d4dde1207dbec5bdd81eef6fabdc0d2118babadabfd858aa" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scratch" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52" +checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" [[package]] name = "semver" @@ -539,7 +580,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -566,33 +607,44 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] -name = "shlex" -version = "2.0.1" +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.13.1" +version = "1.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "d0d5d4b1981b8bbbb7aed204cae5726d683d5d6ac7e74ec54122ea28f315e7c8" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.109" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" dependencies = [ "proc-macro2", "quote", @@ -601,39 +653,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -642,20 +693,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -674,9 +725,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -692,9 +743,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563" [[package]] name = "utf8parse" @@ -704,29 +755,64 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514" dependencies = [ - "uuid-macro-internal", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "uuid-macro-internal" -version = "1.8.0" +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "wasm-bindgen" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9881bea7cbe687e36c9ab3b778c36cd0487402e270304e8b1296d5085303c1a2" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" +dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn", + "syn 3.0.9", + "wasm-bindgen-shared", ] [[package]] -name = "valuable" -version = "0.1.0" +name = "wasm-bindgen-shared" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" +dependencies = [ + "unicode-ident", +] [[package]] name = "wdk" @@ -791,7 +877,7 @@ dependencies = [ "scratch", "serde", "serde_json", - "syn", + "syn 2.0.119", ] [[package]] @@ -879,7 +965,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -890,7 +976,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -927,15 +1013,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -945,22 +1022,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - [[package]] name = "windows-threading" version = "0.2.1" @@ -970,54 +1031,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - [[package]] name = "zmij" version = "1.0.23" diff --git a/Cargo.toml b/Cargo.toml index 6bdb116..e5cd497 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,8 +25,8 @@ panic = "abort" lto = true [workspace.dependencies] -anyhow = "1.0.103" -paste = "1.0.14" +anyhow = "1.0.104" +paste = "1.0.15" wdk = "0.5.0" wdk-alloc = "0.4.2" wdk-build = "0.6.0" diff --git a/general/echo/kmdf/exe/Cargo.toml b/general/echo/kmdf/exe/Cargo.toml index 984b918..2099b59 100644 --- a/general/echo/kmdf/exe/Cargo.toml +++ b/general/echo/kmdf/exe/Cargo.toml @@ -9,14 +9,14 @@ edition.workspace = true publish.workspace = true [dependencies.once_cell] -version = "1.19.0" +version = "1.21.4" [dependencies.uuid] -version = "1.8.0" +version = "1.29.0" features = ["macro-diagnostics"] [dependencies.windows-sys] -version = "0.59.0" +version = "0.61.2" features = [ "Win32_Devices_DeviceAndDriverInstallation", "Win32_Storage_FileSystem", diff --git a/general/echo/kmdf/exe/src/main.rs b/general/echo/kmdf/exe/src/main.rs index 4d2685f..3b7c58d 100644 --- a/general/echo/kmdf/exe/src/main.rs +++ b/general/echo/kmdf/exe/src/main.rs @@ -28,31 +28,33 @@ use std::{env, error::Error, ffi::OsString, os::windows::prelude::*, sync::RwLoc use once_cell::sync::Lazy; use uuid::{uuid, Uuid}; -use windows_sys::Win32::{ - Devices::DeviceAndDriverInstallation, - Foundation::{ - CloseHandle, - GetLastError, - BOOL, - ERROR_IO_PENDING, - FALSE, - HANDLE, - INVALID_HANDLE_VALUE, - }, - Storage::FileSystem::{ - CreateFileW, - ReadFile, - WriteFile, - FILE_FLAG_OVERLAPPED, - FILE_GENERIC_READ, - FILE_GENERIC_WRITE, - FILE_SHARE_READ, - FILE_SHARE_WRITE, - OPEN_EXISTING, - }, - System::{ - Threading::INFINITE, - IO::{CreateIoCompletionPort, GetQueuedCompletionStatus, OVERLAPPED, OVERLAPPED_0}, +use windows_sys::{ + core::BOOL, + Win32::{ + Devices::DeviceAndDriverInstallation, + Foundation::{ + CloseHandle, + GetLastError, + ERROR_IO_PENDING, + FALSE, + HANDLE, + INVALID_HANDLE_VALUE, + }, + Storage::FileSystem::{ + CreateFileW, + ReadFile, + WriteFile, + FILE_FLAG_OVERLAPPED, + FILE_GENERIC_READ, + FILE_GENERIC_WRITE, + FILE_SHARE_READ, + FILE_SHARE_WRITE, + OPEN_EXISTING, + }, + System::{ + Threading::INFINITE, + IO::{CreateIoCompletionPort, GetQueuedCompletionStatus, OVERLAPPED, OVERLAPPED_0}, + }, }, }; From 7708f990816ef97a009efd4b319dbe6fb73387ef Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Wed, 28 Oct 2026 15:57:30 -0700 Subject: [PATCH 12/17] ci: allow unicode-ident AND license in dependency review unicode-ident 1.0.27 is licensed as (MIT OR Apache-2.0) AND Unicode-3.0, which dependency-review-action can't evaluate (actions/dependency-review-action#263). Add a versioned exception, matching windows-drivers-rs. --- .github/workflows/github-dependency-review.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/github-dependency-review.yaml b/.github/workflows/github-dependency-review.yaml index a478c33..0adbef3 100644 --- a/.github/workflows/github-dependency-review.yaml +++ b/.github/workflows/github-dependency-review.yaml @@ -31,7 +31,9 @@ jobs: ISC, Unicode-DFS-2016 # anstyle@1.0.4 is licensed as (MIT OR Apache-2.0), but the Github api fails to detect it: https://github.com/rust-cli/anstyle/tree/main/crates/anstyle - allow-dependencies-licenses: 'pkg:cargo/anstyle@1.0.4' + # AND combinations are currently bugged (https://github.com/actions/dependency-review-action/issues/263): + # * unicode-ident@1.0.27 License: (MIT OR Apache-2.0) AND Unicode-3.0 + allow-dependencies-licenses: 'pkg:cargo/anstyle@1.0.4, pkg:cargo/unicode-ident@1.0.27' comment-summary-in-pr: on-failure # Explicit refs required for merge_group and push triggers: # https://github.com/actions/dependency-review-action/issues/456 From 80f356502ccc3dece8725fd2b53a35a366a0e69a Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Wed, 28 Oct 2026 16:43:40 -0700 Subject: [PATCH 13/17] ci: allow Unicode-3.0 license instead of per-version exception dependency-review-action now evaluates AND expressions (actions/dependency-review-action#263 is fixed). unicode-ident 1.0.27 failed only because Unicode-3.0, the successor to Unicode-DFS-2016, was missing from the allowlist. --- .github/workflows/github-dependency-review.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/github-dependency-review.yaml b/.github/workflows/github-dependency-review.yaml index 0adbef3..5f69bc8 100644 --- a/.github/workflows/github-dependency-review.yaml +++ b/.github/workflows/github-dependency-review.yaml @@ -29,11 +29,10 @@ jobs: Apache-2.0, BSD-3-Clause, ISC, - Unicode-DFS-2016 + Unicode-DFS-2016, + Unicode-3.0 # anstyle@1.0.4 is licensed as (MIT OR Apache-2.0), but the Github api fails to detect it: https://github.com/rust-cli/anstyle/tree/main/crates/anstyle - # AND combinations are currently bugged (https://github.com/actions/dependency-review-action/issues/263): - # * unicode-ident@1.0.27 License: (MIT OR Apache-2.0) AND Unicode-3.0 - allow-dependencies-licenses: 'pkg:cargo/anstyle@1.0.4, pkg:cargo/unicode-ident@1.0.27' + allow-dependencies-licenses: 'pkg:cargo/anstyle@1.0.4' comment-summary-in-pr: on-failure # Explicit refs required for merge_group and push triggers: # https://github.com/actions/dependency-review-action/issues/456 From fa368badd858e1819bf9f2fb9b1b525813418754 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Mon, 2 Nov 2026 11:31:33 -0800 Subject: [PATCH 14/17] ci: drop stale anstyle license exception The exception only matched anstyle 1.0.4, which hasn't been in Cargo.lock for a long time. GitHub reports anstyle 1.0.14 as MIT OR Apache-2.0, so no override is needed. --- .github/workflows/github-dependency-review.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/github-dependency-review.yaml b/.github/workflows/github-dependency-review.yaml index 5f69bc8..b9ba926 100644 --- a/.github/workflows/github-dependency-review.yaml +++ b/.github/workflows/github-dependency-review.yaml @@ -31,8 +31,6 @@ jobs: ISC, Unicode-DFS-2016, Unicode-3.0 - # anstyle@1.0.4 is licensed as (MIT OR Apache-2.0), but the Github api fails to detect it: https://github.com/rust-cli/anstyle/tree/main/crates/anstyle - allow-dependencies-licenses: 'pkg:cargo/anstyle@1.0.4' comment-summary-in-pr: on-failure # Explicit refs required for merge_group and push triggers: # https://github.com/actions/dependency-review-action/issues/456 From 47a605c54be65cd18dac8451834a7c9d4294a399 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Mon, 2 Nov 2026 11:33:31 -0800 Subject: [PATCH 15/17] chore: add trailing newline to dependabot.yaml --- .github/dependabot.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 5982d70..9875576 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -42,4 +42,4 @@ updates: - "type:dependabot" - "type:dependencies-github-actions" cooldown: - default-days: 7 \ No newline at end of file + default-days: 7 From 8ea5a23bb98d9b04c11c1797bab550a807c37a73 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Mon, 2 Nov 2026 12:01:42 -0800 Subject: [PATCH 16/17] chore: drop echoapp rust-version The 1.72.1 MSRV was stale (uuid 1.29 already requires 1.89, and the WDR crates require 1.91) and nothing in CI checked it. As samples, these crates track the toolchain WDR supports rather than declaring their own. Without the old MSRV, clippy applies its newer lints, so use &raw pointers instead of implicit reference coercions and switch to std::sync::LazyLock, which removes the once_cell dependency. --- Cargo.lock | 3 +-- general/echo/kmdf/exe/Cargo.toml | 4 ---- general/echo/kmdf/exe/src/main.rs | 30 ++++++++++++++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34b0a5f..23d025d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -240,7 +240,6 @@ dependencies = [ name = "echoapp" version = "0.1.0" dependencies = [ - "once_cell", "uuid", "windows-sys", ] diff --git a/general/echo/kmdf/exe/Cargo.toml b/general/echo/kmdf/exe/Cargo.toml index 2099b59..a6017e0 100644 --- a/general/echo/kmdf/exe/Cargo.toml +++ b/general/echo/kmdf/exe/Cargo.toml @@ -3,14 +3,10 @@ name = "echoapp" version = "0.1.0" description = "Test app for kmdf echo-2 sample driver" keywords = ["windows", "kmdf", "driver", "wdk", "sample"] -rust-version = "1.72.1" license.workspace = true edition.workspace = true publish.workspace = true -[dependencies.once_cell] -version = "1.21.4" - [dependencies.uuid] version = "1.29.0" features = ["macro-diagnostics"] diff --git a/general/echo/kmdf/exe/src/main.rs b/general/echo/kmdf/exe/src/main.rs index 3b7c58d..130cfb8 100644 --- a/general/echo/kmdf/exe/src/main.rs +++ b/general/echo/kmdf/exe/src/main.rs @@ -24,9 +24,15 @@ #![deny(rustdoc::unescaped_backticks)] #![deny(rustdoc::redundant_explicit_links)] -use std::{env, error::Error, ffi::OsString, os::windows::prelude::*, sync::RwLock, thread}; +use std::{ + env, + error::Error, + ffi::OsString, + os::windows::prelude::*, + sync::{LazyLock, RwLock}, + thread, +}; -use once_cell::sync::Lazy; use uuid::{uuid, Uuid}; use windows_sys::{ core::BOOL, @@ -66,7 +72,7 @@ struct Globals { device_path: String, } -static GLOBAL_DATA: Lazy> = Lazy::new(|| RwLock::new(Globals::default())); +static GLOBAL_DATA: LazyLock> = LazyLock::new(|| RwLock::new(Globals::default())); static GUID_DEVINTERFACE_ECHO: Uuid = uuid!("CDC35B6E-0BE4-4936-BF5F-5537380A7C1A"); static READER_TYPE: u32 = 1; static WRITER_TYPE: u32 = 2; @@ -212,7 +218,7 @@ fn perform_write_read_test(h_device: HANDLE, test_length: u32) -> Result<(), Box h_device, write_buffer.as_ptr().cast(), u32::try_from(write_buffer.len()).unwrap(), - &mut bytes_returned, + &raw mut bytes_returned, std::ptr::null_mut(), ); } @@ -249,7 +255,7 @@ fn perform_write_read_test(h_device: HANDLE, test_length: u32) -> Result<(), Box h_device, read_buffer.as_mut_ptr().cast(), test_length, - &mut bytes_returned, + &raw mut bytes_returned, std::ptr::null_mut(), ); } @@ -456,7 +462,7 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { h_device, buffer_offset, u32::try_from(BUFFER_SIZE).unwrap(), - &mut number_of_bytes_written, + &raw mut number_of_bytes_written, overlap_struct_offset, ); } @@ -488,9 +494,9 @@ fn async_io_work(io_type: u32) -> Result<(), Box> { unsafe { r = GetQueuedCompletionStatus( h_completion_port, - &mut number_of_bytes_transferred, - &mut key, - std::ptr::addr_of_mut!(completed_ov_ptr), + &raw mut number_of_bytes_transferred, + &raw mut key, + &raw mut completed_ov_ptr, INFINITE, ); } @@ -667,8 +673,8 @@ fn get_device_path(interface_guid: &Uuid) -> Result<(), Box> { // of space needed for a subsequent request unsafe { config_ret = DeviceAndDriverInstallation::CM_Get_Device_Interface_List_SizeW( - &mut device_interface_list_length, - &guid, + &raw mut device_interface_list_length, + &raw const guid, std::ptr::null(), DeviceAndDriverInstallation::CM_GET_DEVICE_INTERFACE_LIST_PRESENT, ); @@ -694,7 +700,7 @@ fn get_device_path(interface_guid: &Uuid) -> Result<(), Box> { // Device Interfaces that match the Interface GUID for the echo driver unsafe { config_ret = DeviceAndDriverInstallation::CM_Get_Device_Interface_ListW( - &guid, + &raw const guid, std::ptr::null(), buffer_ptr, device_interface_list_length, From 6fd38c96229e9636c398fcadc4699337593abbc5 Mon Sep 17 00:00:00 2001 From: Melvin Wang Date: Mon, 2 Nov 2026 12:02:01 -0800 Subject: [PATCH 17/17] build: declare echoapp dependencies in the workspace root Match the drivers and windows-drivers-rs by keeping every dependency version in [workspace.dependencies]; echoapp keeps only its feature selections. --- Cargo.toml | 2 ++ general/echo/kmdf/exe/Cargo.toml | 12 ++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e5cd497..85680e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,8 +27,10 @@ lto = true [workspace.dependencies] anyhow = "1.0.104" paste = "1.0.15" +uuid = "1.29.0" wdk = "0.5.0" wdk-alloc = "0.4.2" wdk-build = "0.6.0" wdk-panic = "0.5.0" wdk-sys = "0.5.2" +windows-sys = "0.61.2" diff --git a/general/echo/kmdf/exe/Cargo.toml b/general/echo/kmdf/exe/Cargo.toml index a6017e0..1d069bd 100644 --- a/general/echo/kmdf/exe/Cargo.toml +++ b/general/echo/kmdf/exe/Cargo.toml @@ -7,13 +7,9 @@ license.workspace = true edition.workspace = true publish.workspace = true -[dependencies.uuid] -version = "1.29.0" -features = ["macro-diagnostics"] - -[dependencies.windows-sys] -version = "0.61.2" -features = [ +[dependencies] +uuid = { workspace = true, features = ["macro-diagnostics"] } +windows-sys = { workspace = true, features = [ "Win32_Devices_DeviceAndDriverInstallation", "Win32_Storage_FileSystem", "Win32_Foundation", @@ -21,4 +17,4 @@ features = [ "Win32_System_IO", "Win32_System_WindowsProgramming", "Win32_System_Threading", -] +] }