ceplugin 0.5.1

Rust bindings to the Cheat Engine plugin SDK
Documentation

Example

Cargo.toml

[package]
name = "myplugin"
version = "0.1.0"
authors = ["Mack Stump <mack.stump@gmail.com>"]

[lib]
crate-type = ["cdylib"]

[dependencies]
libc = "0.2.21"
winapi = "0.2.8"
ceplugin = "0.5.0"

src/lib.rs

extern crate ceplugin;
extern crate libc;
extern crate winapi;

use winapi::*;

#[allow(non_snake_case)]
#[no_mangle]
pub extern "stdcall" fn CEPlugin_InitializePlugin(ef: *mut ceplugin::ExportedFunctions,
                                                  pluginid: libc::c_int) -> BOOL {
    let ef = unsafe { &mut *ef };

    (ef.ShowMessage)(b"Plugin Initialized\0" as *const u8);

    TRUE
}

#[allow(non_snake_case)]
#[no_mangle]
pub extern "stdcall" fn CEPlugin_GetVersion(pv: *mut ceplugin::PluginVersion,
                                            sizeofpluginversion: libc::c_int) -> BOOL {
    let pv = unsafe { &mut *pv };

    pv.version = 2;
    pv.pluginname = b"Rust CE Plugin\0" as *const libc::c_uchar;

    TRUE
}

#[allow(non_snake_case)]
#[no_mangle]
pub extern "stdcall" fn CEPlugin_DisablePlugin() -> BOOL {
    TRUE
}