Windows EFI ブート ローダーであるファイル「bootmgfw.efi」をダウンロード (TFTP) する必要がある UEFI アプリケーションがあります。Mtftp()、LoadImage()、および StartImage() を正常に呼び出して、イメージをダウンロードして実行できます。ただし、Microsoft ブート ローダーは、ネットワーク経由ではなくローカルで実行されていると判断し、必要なファイルを TFTP 経由でダウンロードするのではなく、ローカルで探します。ネットワークからのものであることを認識するようにアプリケーションを生成するにはどうすればよいですか?
私には 2 つのアイデアがありますが、これまでのところ、どちらも機能させることができませんでした。
LoadImage() を呼び出した後、StartImage() を呼び出す前に、新しいイメージの EFI_LOADED_IMAGE を取得して変更する必要があります。ネットワークにロードされていることを示すために DevicePath を変更する必要があると思いますが、これを行う方法がわかりません。
Mtftp() をスキップし、BootPolicy に TRUE を指定して LoadImage() を呼び出します。これでファイルがダウンロードされて読み込まれると思いますが、読み込むファイルを指定する方法がわかりません。LoadImage() に渡された DevicePath にはこれが含まれていると思いますが、DevicePath を作成する方法がわかりません。
このアプリケーションを作成した UEFI 開発者がいましたが、彼は作業を完了する前に会社を去りました。そのため、このコード ベースを取り上げて UEFI を学習し、これを完成させなければなりません。助けてくれてありがとう!