EFI FIRMWARE VOLUME HEADER
From PhoenixWiki
Describes the features and layout of the firmware volume.
Contents |
Prototype
#include "EfiFirmwareVolumeHeader.h"
typedef struct {
UINT8 ZeroVector[16];
EFI_GUID FileSystemGuid;
UINT64 FvLength;
UINT32 Signature;
EFI_FVB_ATTRIBUTES Attributes;
UINT16 HeaderLength;
UINT16 Checksum;
UINT8 Reserved[3];
UINT8 Revision;
EFI_FV_BLOCK_MAP_ENTRY FvBlockMap[1];
} EFI_FIRMWARE_VOLUME_HEADER;
Members
Members
| Member | Description | ||||||
|---|---|---|---|---|---|---|---|
| ZeroVector | The first 16 bytes are reserved to allow for the reset vector of processors whose reset vector is at address 0. | ||||||
| FileSystemGuid | Declares the file system with which the firmware volume is formatted. | ||||||
| FvLength | Length in bytes of the complete firmware volume, including the header. | ||||||
| Signature | Set to {'_','F','V','H'}. | ||||||
| Attributes | Declares capabilities and power-on defaults for the firmware volume. | ||||||
| HeaderLength | Length in bytes of the complete firmware volume header. | ||||||
| Checksum | A 16-bit checksum of the firmware volume header. A valid header sums to zero. | ||||||
| Reserved | In this version of the specification, this field must always be set to zero. | ||||||
| Revision | Set to 1. Future versions of this specification may define new header fields and will increment the Revision field accordingly. | ||||||
| FvBlockMap | An array of run-length encoded FvBlockMapEntry structures. The array is terminated with an entry of {0,0}.
|
Description
A firmware volume based on a block device begins with a header that describes the features and layout of the firmware volume. This header includes a description of the capabilities, state, and block map of the device.
The block map is a run-length-encoded array of logical block definitions. This design allows a reasonable mechanism of describing the block layout of typical firmware devices. Each block can be referenced by its logical block address (LBA). The LBA is a zero-based enumeration of all of the blocks—i.e., LBA 0 is the first block, LBA 1 is the second block, and LBA n is the (n-1) device.
The header is always located at the beginning of LBA 0.
Copyright (C) 2008,2010 Phoenix Technologies Ltd. All Rights Reserved. Portions copyright © 2004 Intel Corporation. Used with permission.
