1 use core::{fmt, mem}; 2 3 use uefi_raw::Guid; 4 5 /// 由DragonStub设置的,用于描述内核被放置在的地址的GUID 6 pub static DRAGONSTUB_EFI_PAYLOAD_EFI_GUID: Guid = Guid::new( 7 unsafe { mem::transmute_copy(&0xddf1d47cu32) }, 8 unsafe { mem::transmute_copy(&0x102cu32) }, 9 unsafe { mem::transmute_copy(&0xaaf9u32) }, 10 0xce, 11 0x34, 12 [0xbc, 0xef, 0x98, 0x12, 0x00, 0x31], 13 ); 14 15 /// 表示内核被加载到的地址的信息。 16 /// 17 /// 对应 `DRAGONSTUB_EFI_PAYLOAD_EFI_GUID` 18 #[derive(Clone, Copy)] 19 #[repr(C)] 20 pub struct DragonStubPayloadEFI { 21 /// 内核文件被加载到的物理地址 22 pub paddr: u64, 23 24 /// 占用的空间的大小 25 pub size: u64, 26 } 27 28 impl fmt::Debug for DragonStubPayloadEFI { 29 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 30 f.debug_struct("DragonStubPayloadEFI") 31 .field("paddr", &format_args!("0x{:x}", self.paddr)) 32 .field("size", &self.size) 33 .finish() 34 } 35 } 36