Intel
®
Platform Innovation Framework
for EFI
Firmware Volume Specification
Version 0.9
September 16, 2003
Firmware Volume Specification
ii September 2003 Version 0.9
THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY
OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY
OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Except for a limited copyright license
to copy this specification for internal use only, no license, express or implied, by estoppel or otherwise, to any intellectual
property rights is granted herein.
Intel disclaims all liability, including liability for infringement of any proprietary rights, relating to implementation of information
in this specification. Intel does not warrant or represent that such implementation(s) will not infringe such rights.
Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or “undefined.”
Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising
from future changes to them.
This document is an intermediate draft for comment only and is subject to change without notice. Readers should not design
products based on this document.
Intel, the Intel logo, and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United
States and other countries.
* Other names and brands may be claimed as the property of others.
Copyright 2000–2003, Intel Corporation.
Intel order number xxxxxx-001
Version 0.9 September 2003 iii
Revision History
Revision Revision History Date
0.9 First public release. 9/16/03
Firmware Volume Specification
iv September 2003 Version 0.9
Version 0.9 September 2003 v
Contents
1 Introduction .......................................................................................................9
Overview ............................................................................................................................... 9
Scope .................................................................................................................................... 9
Rationale ............................................................................................................................... 9
Conventions Used in This Document .................................................................................. 10
Data Structure Descriptions ........................................................................................ 10
Protocol Descriptions .................................................................................................. 11
Procedure Descriptions .............................................................................................. 11
Pseudo-Code Conventions ......................................................................................... 12
Typographic Conventions ........................................................................................... 12
2 Design Discussion ......................................................................................... 15
Firmware Volumes .............................................................................................................. 15
Firmware Volume Protocol .................................................................................................. 15
Firmware Volume Protocol Overview .......................................................................... 15
Firmware Volume Protocol Stacks .............................................................................. 15
Firmware Volume Protocol Stack: Typical .................................................... 15
Firmware Volume Protocol Stack: Memory-Mapped Firmware Volume
Hardware .................................................................................... 16
Firmware Volume Protocol Stack: Direct Interface with Hardware ................ 17
Framework Firmware Image Format ................................................................................... 17
Framework Firmware Image Format Introduction ....................................................... 17
File Sections ............................................................................................................... 18
File Sections ................................................................................................ 18
Example File Image ..................................................................................... 18
Section Layout ............................................................................................. 19
Architectural Section Types .......................................................................... 20
Section Extraction Protocols ....................................................................................... 21
Section Extraction Protocol Overview ........................................................... 21
GUIDed Section Extraction Protocol Overview ............................................. 21
File Types ................................................................................................................... 21
File Types Overview ..................................................................................... 21
3 Code Definitions ............................................................................................. 23
Introduction ......................................................................................................................... 23
Firmware Volume Protocol .................................................................................................. 24
EFI_FIRMWARE_VOLUME_PROTOCOL .................................................................. 24
EFI_FIRMWARE_VOLUME_PROTOCOL. GetVolumeAttributes() ............................. 26
EFI_FIRMWARE_VOLUME_PROTOCOL. SetVolumeAttributes() ............................. 29
EFI_FIRMWARE_VOLUME_PROTOCOL.ReadFile() ................................................ 31
EFI_FIRMWARE_VOLUME_PROTOCOL. ReadSection() ......................................... 35
EFI_FIRMWARE_VOLUME_PROTOCOL.WriteFile() ................................................. 38
EFI_FIRMWARE_VOLUME_PROTOCOL.GetNextFile() ............................................ 42