{"id":13822839,"url":"https://github.com/pravic/winapi-kmd-rs","last_synced_at":"2025-04-06T12:12:18.070Z","repository":{"id":41371474,"uuid":"56066765","full_name":"pravic/winapi-kmd-rs","owner":"pravic","description":"Windows Kernel-Mode Drivers written in Rust","archived":false,"fork":false,"pushed_at":"2017-09-13T04:15:20.000Z","size":907,"stargazers_count":483,"open_issues_count":6,"forks_count":50,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-30T11:09:16.528Z","etag":null,"topics":["kmd","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pravic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-12T13:45:55.000Z","updated_at":"2025-03-23T23:39:23.000Z","dependencies_parsed_at":"2022-07-19T01:17:01.259Z","dependency_job_id":null,"html_url":"https://github.com/pravic/winapi-kmd-rs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravic%2Fwinapi-kmd-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravic%2Fwinapi-kmd-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravic%2Fwinapi-kmd-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravic%2Fwinapi-kmd-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pravic","download_url":"https://codeload.github.com/pravic/winapi-kmd-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478325,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kmd","rust"],"created_at":"2024-08-04T08:02:20.231Z","updated_at":"2025-04-06T12:12:18.053Z","avatar_url":"https://github.com/pravic.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"## Windows Kernel-Mode Drivers written in Rust\n\n[![Join the chat at https://gitter.im/pravic/winapi-kmd-rs](https://badges.gitter.im/pravic/winapi-kmd-rs.png)](https://gitter.im/pravic/winapi-kmd-rs)\n\nThis library is just a proof-of-concept of the windows kernel-mode drivers, which can be written in Rust programming language.\n\nIt contains the types, constants and bindings for the [Windows Driver Kit](https://en.wikipedia.org/wiki/Windows_Driver_Kit)\nwith target OS starting from Windows XP (x86/x64).\n\n\n### Getting started\n\nTo compile you need the following:\n\n* Nightly Rust with MSVC ABI starting from 2016-04-12 (?), which supports \"[is-like-msvc](https://github.com/rust-lang/rust/pull/32823)\" target flavor.\n* MSVC itself, either VS 2015 or just MSVC Build Tools.\n* Rust environment for the Windows drivers: [kmd-env-rs](https://github.com/pravic/kmd-env-rs).\n\nAs workaround you can compile drivers as `#[crate_type=\"staticlib\"]` and link them manually (see *examples/03.urandom/build.cmd*).\n\n\nSetting up:\n\n```\ngit clone https://github.com/pravic/kmd-env-rs .\ngit submodule init\ngit submodule update --recursive\n```\n\n[Set](https://github.com/rust-lang-nursery/multirust-rs#directory-overrides) the nightly-msvc Rust toolchain for this repository:\n\n`rustup override add nightly-i686-msvc`\n\nTry to compile example:\n\n```\ncd km\\examples\\01.minimal\\\ncargo build --release\n```\n\nBy default, it compiles to x86 mode.\nIf you need x64, either change `kmd-env-rs/.cargo/config` as following:\n\n```\n[build]\ntarget = \"x86_64-sys-windows-msvc\"\n...\n```\n\nor use [RUST_TARGET_PATH](https://github.com/rust-lang/rfcs/blob/master/text/0131-target-specification.md):\n\n```\nset RUST_TARGET_PATH=C:/path/to/kmd-env-rs/.cargo`\ncargo build --release --target i686-sys-windows-msvc\ncargo build --release --target x86_64-sys-windows-msvc\n```\n\n\n\n### Examples\n\nSee [examples](https://github.com/pravic/winapi-kmd-rs/tree/master/examples) folder with a driver samples and screenshots.\n\n\n### [Reference documentation](http://pravic.github.io/winapi-kmd-rs/).\n\n\n#### Acknowledges\n\nIn memory of [Four-F](https://web.archive.org/web/20130530073702/http://www.freewebs.com/four-f/) - the author of tutorials about kernel mode drivers\ndevelopment in assembly language (2002-2005).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpravic%2Fwinapi-kmd-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpravic%2Fwinapi-kmd-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpravic%2Fwinapi-kmd-rs/lists"}