文章目录
描述了加载image到内存中的各个信息及参数
1. EFI Loaded Image Protocol
1.1 EFI_LOADED_IMAGE_PROTOCOL
可以在任意image handle上使用以获取信息
typedef struct {
UINT32 Revision; //版本,向前兼容
EFI_HANDLE ParentHandle; //父Handle
EFI_SYSTEM_TABLE *SystemTable; //Image的system table指针
// Source location of the image
EFI_HANDLE DeviceHandle; //被加载Handle的设备句柄
EFI_DEVICE_PATH_PROTOCOL *FilePath; //被加载Handle文件路径指针
VOID *Reserved;
// Image’s load options
UINT32 LoadOptionsSize;
VOID *LoadOptions; //LoadOption
// Location where image was loaded
VOID *ImageBase; //Base address
UINT64 ImageSize; //Image Size
EFI_MEMORY_TYPE ImageCodeType; //内存类型
EFI_MEMORY_TYPE ImageDataType;
EFI_IMAGE_UNLOAD Unload; //卸载image
} EFI_LOADED_IMAGE_PROTOCOL;
1.2 使用
可以通过LocateHandle/LocateHandle/HandleProtocol
来获取handle,然后使用此结构体中的成员。
EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
Status = gBS->HandleProtocol (DriverImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &LoadedImage);
Handle = LoadedImage->ImageBase; ...
1.3 Unload()
从内存中卸载image
2. EFI Loaded Image Device Path Protocol
总结
后续有更深理解,会继续补充。
学艺不精,错误请指正;
如有侵权,请联系删除。
参考文档: 《UEFI_Spec_2_9_2021_03_18》