wdext 0.1.0

A DbgEng wrapper framework
docs.rs failed to build wdext-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

WdExt

A Rust-friendly framework for WinDbg extensions.

Features

Wd* is a high-level wrapper that can be used in WdExt. In general, use Wd*.

Most of the major functionality is implemented so that it can be used through Wd*, but if some functionality is missing, you can use the lower-level DbgEng wrappers.

The DbgEng wrappers generally wrap the DbgEng COM API as follows:

  • ANSI/Unicode strings are handled properly in Rust.
  • APIs whose argument or return value types change depending on flags are wrapped with enums.
  • Numeric values used as arguments or return values are distinguished strictly.

Some DbgEng APIs are not supported by the DbgEng wrappers. If some functionality is missing, you can directly use the raw DbgEng COM API exported from windows-rs.

Usage

Developing a WinDbg extension

use wdext::*;

debug_extension_initialize!(1, 0);

register_command!(hello, hello_command);

pub fn hello_command(client: &WdClient, args: String) -> WdResult<()> {
  let ctrl = WdControl::from_interface(client.as_interface())?;
  ctrl.out("Hello from WdExt!\n")?;
  Ok(())
}

The sample extensions are located in the extensions directory.

License

MIT or Apache-2.0 License.