/** @file Guid & data structure used for Delivering Capsules Containing Updates to Firmware Management Protocol Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @par Revision Reference: GUIDs defined in UEFI 2.4 spec. **/ #ifndef _FMP_CAPSULE_GUID_H__ #define _FMP_CAPSULE_GUID_H__ // // This is the GUID of the capsule for Firmware Management Protocol. // #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID \ { \ 0x6dcbd5ed, 0xe82d, 0x4c44, {0xbd, 0xa1, 0x71, 0x94, 0x19, 0x9a, 0xd9, 0x2a } \ } #pragma pack(1) typedef struct { UINT32 Version; /// /// The number of drivers included in the capsule and the number of corresponding /// offsets stored in ItemOffsetList array. /// UINT16 EmbeddedDriverCount; /// /// The number of payload items included in the capsule and the number of /// corresponding offsets stored in the ItemOffsetList array. /// UINT16 PayloadItemCount; /// /// Variable length array of dimension [EmbeddedDriverCount + PayloadItemCount] /// containing offsets of each of the drivers and payload items contained within the capsule /// // UINT64 ItemOffsetList[]; } EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER; typedef struct { UINT32 Version; /// /// Used to identify device firmware targeted by this update. This guid is matched by /// system firmware against ImageTypeId field within a EFI_FIRMWARE_IMAGE_DESCRIPTOR /// EFI_GUID UpdateImageTypeId; /// /// Passed as ImageIndex in call to EFI_FIRMWARE_MANAGEMENT_PROTOCOL.SetImage() /// UINT8 UpdateImageIndex; UINT8 reserved_bytes[3]; /// /// Size of the binary update image which immediately follows this structure /// UINT32 UpdateImageSize; /// /// Size of the VendorCode bytes which optionally immediately follow binary update image in the capsule /// UINT32 UpdateVendorCodeSize; /// /// The HardwareInstance to target with this update. If value is zero it means match all /// HardwareInstances. This field allows update software to target only a single device in /// cases where there are more than one device with the same ImageTypeId GUID. /// This header is outside the signed data of the Authentication Info structure and /// therefore can be modified without changing the Auth data. /// UINT64 UpdateHardwareInstance; } EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER; #pragma pack() #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER_INIT_VERSION 0x00000001 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000002 extern EFI_GUID gEfiFmpCapsuleGuid; #endif