uefi规范示例提到EfiCoreImageHandle。怎么弄?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uefi规范示例提到EfiCoreImageHandle。怎么弄?相关的知识,希望对你有一定的参考价值。
引用关于EFI_BOOT_SERVICES.HandleProtocol()的UEFI规范部分:
HandleProtocol()函数仍可供旧EFI应用程序和驱动程序使用。但是,所有新应用程序和驱动程序都应使用EFI_BOOT_SERVICES.OpenProtocol()代替HandleProtocol()。以下代码片段显示了使用OpenProtocol()的HandleProtocol()的可能实现。变量EfiCoreImageHandle是EFI核心的图像句柄。
EFI_STATUS
HandleProtocol (
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
OUT VOID **Interface
)
{
return OpenProtocol (
Handle,
Protocol,
Interface,
EfiCoreImageHandle,
NULL,
EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
);
}
报价结束。
我的问题是:当引导管理器或UEFI shell运行EFI应用程序时,如何获取EfiCoreImageHandle的值?
答案
简而言之,EfiCoreImageHandle
只是规范中的占位符。看看我如何在OpenProtocol
的ShowEDID
工具中调用https://github.com/fpmurphy/UEFI-Utilities-2019。
另请参阅我目前使用ShowUSB
的HandleProtocol
实用程序,即
Status = gBS->HandleProtocol( HandleBuffer[Index],
&gEfiUsbIoProtocolGuid,
(VOID**)&UsbIo );
我可以用以下代码替换上面的代码:
Status = gBS->OpenProtocol( HandleBuffer[Index],
&gEfiUsbIoProtocolGuid,
(VOID **)&UsbIo,
gImageHandle,
NULL,
EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL );
使用UDK2018和Lenovo T480进行测试
以上是关于uefi规范示例提到EfiCoreImageHandle。怎么弄?的主要内容,如果未能解决你的问题,请参考以下文章