use lief_ffi as ffi;
use super::ldr_data_table_entry::LdrDataTableEntries;
use crate::common::FromFFI;
pub struct PEB {
ptr: cxx::UniquePtr<ffi::runtime_windows_PEB>,
}
impl FromFFI<ffi::runtime_windows_PEB> for PEB {
fn from_ffi(ptr: cxx::UniquePtr<ffi::runtime_windows_PEB>) -> Self {
Self { ptr }
}
}
impl PEB {
pub fn being_debugged(&self) -> bool {
self.ptr.being_debugged()
}
pub fn ldr(&self) -> u64 {
self.ptr.ldr()
}
pub fn process_parameters(&self) -> u64 {
self.ptr.process_parameters()
}
pub fn atl_thunk_slist_ptr(&self) -> u64 {
self.ptr.atl_thunk_slist_ptr()
}
pub fn atl_thunk_slist_ptr32(&self) -> u32 {
self.ptr.atl_thunk_slist_ptr32()
}
pub fn post_process_init_routine(&self) -> u64 {
self.ptr.post_process_init_routine()
}
pub fn session_id(&self) -> u32 {
self.ptr.session_id()
}
pub fn entries(&self) -> LdrDataTableEntries {
LdrDataTableEntries::new(self.ptr.entries())
}
}