mod hex;
pub use self::hex::Hex;
use crate::{
Architecture, VmiEvent, VmiState,
driver::VmiDriver,
os::{VmiOs, VmiOsProcess, VmiOsThread, VmiOsUserModule},
};
pub fn event_view<Arch>(event: &VmiEvent<Arch>) -> Option<u16>
where
Arch: Architecture,
{
event.view().map(|view| view.0)
}
pub fn thread_id<'a, Driver>(thread: &impl VmiOsThread<'a, Driver>) -> Option<u32>
where
Driver: VmiDriver,
{
thread.id().ok().map(|tid| tid.0)
}
pub fn process_id<'a, Driver>(process: &impl VmiOsProcess<'a, Driver>) -> Option<u32>
where
Driver: VmiDriver,
{
process.id().ok().map(|pid| pid.0)
}
pub fn process_name<'a, Driver>(process: &impl VmiOsProcess<'a, Driver>) -> Option<String>
where
Driver: VmiDriver,
{
process.name().ok()
}
pub fn user_module_name<'a, Driver>(module: &impl VmiOsUserModule<'a, Driver>) -> Option<String>
where
Driver: VmiDriver,
{
module.name().ok()
}
pub fn current_thread_id<Os>(vmi: &VmiState<Os>) -> Option<u32>
where
Os: VmiOs,
{
thread_id(&vmi.os().current_thread().ok()?)
}
pub fn current_process_id<Os>(vmi: &VmiState<Os>) -> Option<u32>
where
Os: VmiOs,
{
process_id(&vmi.os().current_process().ok()?)
}
pub fn current_process_name<Os>(vmi: &VmiState<Os>) -> Option<String>
where
Os: VmiOs,
{
process_name(&vmi.os().current_process().ok()?)
}