我有一个 UEFI 应用程序需要下载(TFTP)文件“bootmgfw.efi”,它是 Windows EFI 引导加载程序。我可以成功调用 Mtftp()、LoadImage() 和 StartImage() 来下载和执行图像。但是,Microsoft 引导加载程序确定它是在本地而不是通过网络执行,并在本地查找所需的文件,而不是通过 TFTP 下载它们。如何生成一个应用程序,使其知道它来自网络?
我有两个想法,但到目前为止我都无法实现。
在调用 LoadImage() 但在调用 StartImage() 之前,我需要获取新图像的 EFI_LOADED_IMAGE 并对其进行修改。我想我需要修改 DevicePath 以表明它是网络加载的,但我不知道该怎么做。
跳过 Mtftp() 并使用 TRUE 调用 LoadImage() 以获取 BootPolicy。我相信这会下载并加载文件,但我不知道如何告诉它要加载什么文件。我的猜测是传递给 LoadImage() 的 DevicePath 会包含这个,但我不知道如何构造 DevicePath。
我们有一位 UEFI 开发人员编写了这个应用程序,但他在完成工作之前就离开了公司。所以我不得不拿起这个代码库并学习 UEFI 来尝试完成它。谢谢你的帮助!