1 use crate::protocol::device_path::DevicePathProtocol; 2 use crate::table::boot::MemoryType; 3 use crate::table::system::SystemTable; 4 use crate::{guid, Guid, Handle, Status}; 5 use core::ffi::c_void; 6 7 #[derive(Clone, Copy, Debug)] 8 #[repr(C)] 9 pub struct LoadedImageProtocol { 10 pub revision: u32, 11 pub parent_handle: Handle, 12 pub system_table: *const SystemTable, 13 14 // Source location of the image. 15 pub device_handle: Handle, 16 pub file_path: *const DevicePathProtocol, 17 18 pub reserved: *const c_void, 19 20 // Image load options. 21 pub load_options_size: u32, 22 pub load_options: *const c_void, 23 24 // Location where image was loaded. 25 pub image_base: *const c_void, 26 pub image_size: u64, 27 pub image_code_type: MemoryType, 28 pub image_data_type: MemoryType, 29 pub unload: Option<unsafe extern "efiapi" fn(image_handle: Handle) -> Status>, 30 } 31 32 impl LoadedImageProtocol { 33 pub const GUID: Guid = guid!("5b1b31a1-9562-11d2-8e3f-00a0c969723b"); 34 } 35