2

プログラムで UEFI ドライバーから起動オプションを追加するコードを作成するにはどうすればよいですか? 1)「Boot0001」変数を追加しようとしました:

  ZeroMem(Data, 2048);
  StrCpy(Data, L"Boot0001");
  DataSize = StrLen(Data) * 2;

  Status = gRT->SetVariable(L"Boot0001", &dGuid, Attr, DataSize, &Data);

2) 「BootOrder」変数にエントリを追加する必要があります。しかし、私は方法を理解できません。理想的には、サンプル efi アプリケーションからブート オプション boot を追加したいと考えています。

4

2 に答える 2

1

これがどのように機能するかは、UEFI 仕様で説明されています。これは、UEFI フォーラムから支払いなしで入手できます。現在のバージョンは 2.4B です。

BootOrder 変数メカニズム (とりわけ) は、セクション 3.2 - グローバルに定義された変数で説明されていますが、簡単に要約します。

これは、優先ブート順序のUINT16要素の配列です。UINT16値は、Boot####変数名の数値部分です。したがって、オプションをランク付けBoot0001するにはBoot0002Boot0003好みの逆順で、BootOrder 変数に (hex、エンディアンを無視して) を含める必要があります000300020001

また、Non-Volatile、Boot-services、および Runtime-services 属性を設定する必要があります (その章の表 11 で説明されています)。

于 2014-09-05T17:28:47.233 に答える