From 30b22107a1584c5ce092dfe040d65e69fde2c706 Mon Sep 17 00:00:00 2001 From: futile Date: Wed, 3 Dec 2025 13:37:57 +0000 Subject: [PATCH] add a `modules` function to `Process` --- src/process.rs | 15 +++++++++++++++ src/sys/snapshot.rs | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/process.rs b/src/process.rs index f28c914..86a82e6 100644 --- a/src/process.rs +++ b/src/process.rs @@ -88,6 +88,21 @@ impl Process { Ok(module) } + /// get all `Module`s of a `Process` + pub fn modules(&self) -> Result, Error> { + Ok(snapshot::ModuleSnapshot::get_modules(self.id)? + .iter() + .cloned() + .map(|snapshot| Module { + process_id: self.id, + name: snapshot.name, + path: snapshot.path, + base_address: snapshot.base_address, + base_size: snapshot.base_size, + }) + .collect()) + } + /// follow a pointer chain to the end and return an address pub fn resolve_pointer_chain(&self, chain: &[usize]) -> Result { let mut chain = chain.to_vec(); diff --git a/src/sys/snapshot.rs b/src/sys/snapshot.rs index f786df4..b4a0d2f 100644 --- a/src/sys/snapshot.rs +++ b/src/sys/snapshot.rs @@ -41,7 +41,7 @@ impl ProcessSnapshot { } } -#[derive(Debug)] +#[derive(Clone, Debug)] pub struct ModuleSnapshot { pub name: String, pub path: String,