memflow-native 0.2.6

System call based proxy-OS for memflow
Documentation
#[cfg(target_os = "linux")]
pub mod linux;
#[cfg(target_os = "linux")]
pub use linux::LinuxOs as NativeOs;
#[cfg(target_os = "linux")]
pub use linux::LinuxProcess as NativeProcess;

#[cfg(target_os = "macos")]
pub mod macos;
#[cfg(target_os = "macos")]
pub use macos::MacOs as NativeOs;
#[cfg(target_os = "macos")]
pub use macos::MacProcess as NativeProcess;

#[cfg(target_os = "windows")]
pub mod windows;
#[cfg(target_os = "windows")]
pub use self::windows::WindowsKeyboard as NativeKeyboard;
#[cfg(target_os = "windows")]
pub use self::windows::WindowsKeyboardState as NativeKeyboardState;
#[cfg(target_os = "windows")]
pub use self::windows::WindowsOs as NativeOs;
#[cfg(target_os = "windows")]
pub use self::windows::WindowsProcess as NativeProcess;
#[cfg(target_os = "windows")]
use crate::keyboard::OsKeyboardVtbl;

use memflow::cglue;
use memflow::prelude::v1::*;

#[cfg(target_os = "windows")]
cglue_impl_group!(NativeOs, OsInstance, { OsKeyboard });
#[cfg(not(target_os = "windows"))]
cglue_impl_group!(NativeOs, OsInstance, {});

#[cfg_attr(feature = "plugins", os(name = "native", return_wrapped = true))]
pub fn create_os(args: &OsArgs, lib: LibArc) -> Result<OsInstanceArcBox<'static>> {
    let os = NativeOs::new(args)?;
    Ok(memflow::plugins::os::create_instance(os, lib, args))
}