[![crates.io version]][crates.io link] # detours-rs Microsoft Detours Rust library bindings. This is raw FFI and doesn't provide a nice wrapper, only some `windows-rs` imports. ```cpp DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)Sleep, SleepHook); DetourTransactionCommit(); ``` ```rust DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); let c_fn_ptr = Sleep as unsafe extern "C" fn(_) -> _ as *mut std::ffi::c_void; DetourAttach( c_fn_ptr as *mut *mut c_void, sleep_hook as fn(_) -> _ as *mut c_void, ); DetourTransactionCommit(); let start = Instant::now(); Sleep(10_000u32); let duration = start.elapsed(); assert!(duration.as_secs() < 10_000); ``` [crates.io link]: https://crates.io/crates/detours-rs [crates.io version]: https://img.shields.io/crates/v/detours-rs.svg?style=flat-square