UEFI 環境からのデバイス I/O
Windows OSローダーがUpdateCapsule関数を呼び出すと、CapsuleHeaderArrayに含まれている各capsuleが実行されます。 capsuleの実行の順序は、UEFIファームウェアの実装に依存し、capsuleは、他のcapsuleを基準とした実行の順序や他のcapsuleへの依存関係を想定することはできません。 各capsuleは、更新プログラムとファームウェアイメージを管理する実行可能なUEFIコードの両方で構成される自己完結型のペイロードです。
capsuleが呼び出されると、capsuleに含まれる実行可能コードは、ターゲットデバイスとの通信チャネルを開く責任を負います。 適切なチャネルは、システムのデバイストポロジ、ターゲットデバイスの機能、および特定のUEFI実装によって提供されるUEFIブートサービスとドライバーによって異なります。 Capsuleの実装者は、対象のUEFI環境で使用可能なオプションについて、UEFI BIOSベンダーに問い合わせる必要がある場合があります。 通常、通信は、特定のデバイスのUEFIデバイスドライバーを利用して確立されます。 このドライバーは、適切なプロトコルを使用して、既知のデバイスパスを介してデバイスにバインドするcapsule更新コードを有効にします。
通信が確立されると、更新管理コードは、ターゲットデバイスにファームウェアイメージを書き込みます。 更新が完了すると、ESRT内のデバイスのファームウェアリソースエントリに適切なリターン状態コードが書き込まれます。 更新管理コードは、UpdateCapsule関数に制御を返します。
UpdateCapsule関数、capsuleの構造、およびUEFIブートサービスドライバーとプロトコルの詳細については UEFI仕様を参照してください。