Microsoft は、エンジニアリングおよび製造環境で使用するための USB ベースのフラッシュ ソリューションをいくつか提供しています。 これらのツールでデバイスを使用するには、デバイス上の UEFI 環境がこのトピックに記載されている要件を満たしている必要があります。
フラッシュに関連するこれらの要件は すべての Windows エディションに適用される UEFI 要件 と Windows 10 Mobile の UEFI 要件 にリストされている UEFI 要件を拡張したものです。
必要なUEFIプロトコル
Protocol | 要件の詳細 |
---|---|
USB 関数プロトコル | USB 3.0 経由の USB フラッシュの場合、ファームウェアは EFI_USBFN_IO_PROTOCOL.ConfigureEnableEndpointsEx 関数のサポートを含む、UEFI USB 関数プロトコル リビジョン 0x00010002 以降を実装する必要があります。 詳細については 関数プロトタイプ をご覧ください。 |
BlockIO | Microsoft が提供する USB フラッシュ ソリューションでは、フラッシュ用の 0 以外のサイズのブロック I/O ストレージ デバイスへの最初に返されたポインターを選択します。 デバイスは、非リムーバブル記憶域またはリムーバブル 記憶域にすることができます。 |
UEFI desync イベント (省略可能)
フラッシュ中にディスクの読み取りまたは書き込みを試みる UEFI コンポーネントは、次の表に示すように、UEFI の非同期解除イベント (EFI_EVENT_GROUP_FIRMWARE_DESYNC) のサポートを実装する必要があります。
要件 | 説明 |
---|---|
UEFI ブート サービスのサポート | UEFI ファームウェアは、UEFI 2.3.1 仕様のセクション 6.1 で定義されているイベント、タイマー、およびタスク優先度サービスをサポートする必要があります。 |
イベントグループGUID | Microsoft では、次の GUID を使用してEFI_EVENT_GROUP_FIRMWARE_DESYNCを定義します: {24FA5E72-1A82-49A2-970B-3230372662A5} |
UEFI ファームウェア イベント | 状態を定期的に更新またはストレージに同期する必要があるすべての UEFI ファームウェア コンポーネントを特定します。 これらの各コンポーネントで、EFI_EVENT_GROUP_FIRMWARE_DESYNCに関連付けられたイベントと NotifyFunction() を作成します。これにより、コンポーネントがストレージへの更新/同期を停止します。 イベントの NotifyFunction() は、コンポーネントが非同期モードに移行するために必要なクリーンup 操作を実行する必要があります。 このクリーン後、コンポーネントは、次のデバイスが再起動するまで、ストレージを更新したり、フラッシュと同期したりしてはなりません。 イベントの NotifyFunction が失敗した場合、NotifyFunction() はEFI_SUCCESSを返さないでください。 |
次のコード例は、ファームウェアでイベント グループ GUID イベントを作成する方法を示しています。
gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_CALLBACK,
FIRMWARE_NOTIFICATION_FUNCTION, // To be defined by SoC Vendor
&FIRMWARE_NOTIFICATION_FUNCTION_CONTEXT, // To be defined by SoC Vendor
&EFI_EVENT_GROUP_FIRMWARE_DESYNC,
&Event // Event returned by CreateEventEx
);