wdext 0.1.0

A DbgEng wrapper framework
# 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

```rust
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.