Add comments for enumeration, structure data members those are referred by UefiService, Runtime Service, Dxe Service and Pei Service.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6974 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2008-12-10 08:22:03 +00:00
parent 2c6d600e1c
commit 1bf793701b
11 changed files with 602 additions and 40 deletions

View File

@ -151,7 +151,7 @@ typedef UINT32 TPM_KEY_CONTROL;
/// ///
typedef UINT32 TPM_NV_INDEX; typedef UINT32 TPM_NV_INDEX;
/// ///
/// The family ID. Families ID¡¯s are automatically assigned a sequence number by the TPM. /// The family ID. Families ID's are automatically assigned a sequence number by the TPM.
/// A trusted process can set the FamilyID value in an individual row to NULL, which /// A trusted process can set the FamilyID value in an individual row to NULL, which
/// invalidates that row. The family ID resets to NULL on each change of TPM Owner. /// invalidates that row. The family ID resets to NULL on each change of TPM Owner.
/// ///

View File

@ -24,9 +24,28 @@
/// Global Coherencey Domain types - Memory type /// Global Coherencey Domain types - Memory type
/// ///
typedef enum { typedef enum {
///
/// A memory region that is visible to the boot processor. However, there are no system
/// components that are currently decoding this memory region.
///
EfiGcdMemoryTypeNonExistent, EfiGcdMemoryTypeNonExistent,
///
/// A memory region that is visible to the boot processor. This memory region is being
/// decoded by a system component, but the memory region is not considered to be either
/// system memory or memory-mapped I/O.
///
EfiGcdMemoryTypeReserved, EfiGcdMemoryTypeReserved,
///
/// A memory region that is visible to the boot processor. A memory controller is
/// currently decoding this memory region and the memory controller is producing a
/// tested system memory region that is available to the memory services.
///
EfiGcdMemoryTypeSystemMemory, EfiGcdMemoryTypeSystemMemory,
///
/// A memory region that is visible to the boot processor. This memory region is
/// currently being decoded by a component as memory-mapped I/O that can be used to
/// access I/O devices in the platform.
///
EfiGcdMemoryTypeMemoryMappedIo, EfiGcdMemoryTypeMemoryMappedIo,
EfiGcdMemoryTypeMaximum EfiGcdMemoryTypeMaximum
} EFI_GCD_MEMORY_TYPE; } EFI_GCD_MEMORY_TYPE;
@ -35,8 +54,20 @@ typedef enum {
/// Global Coherencey Domain types - IO type /// Global Coherencey Domain types - IO type
/// ///
typedef enum { typedef enum {
///
/// An I/O region that is visible to the boot processor. However, there are no system
/// components that are currently decoding this I/O region.
///
EfiGcdIoTypeNonExistent, EfiGcdIoTypeNonExistent,
///
/// An I/O region that is visible to the boot processor. This I/O region is currently being
/// decoded by a system component, but the I/O region cannot be used to access I/O devices.
///
EfiGcdIoTypeReserved, EfiGcdIoTypeReserved,
///
/// An I/O region that is visible to the boot processor. This I/O region is currently being
/// decoded by a system component that is producing I/O ports that can be used to access I/O devices.
///
EfiGcdIoTypeIo, EfiGcdIoTypeIo,
EfiGcdIoTypeMaximum EfiGcdIoTypeMaximum
} EFI_GCD_IO_TYPE; } EFI_GCD_IO_TYPE;
@ -45,10 +76,30 @@ typedef enum {
/// The type of allocation to perform. /// The type of allocation to perform.
/// ///
typedef enum { typedef enum {
///
/// The GCD memory space map is searched from the lowest address up to the highest address
/// looking for unallocated memory ranges.
///
EfiGcdAllocateAnySearchBottomUp, EfiGcdAllocateAnySearchBottomUp,
///
/// The GCD memory space map is searched from the lowest address up
/// to the specified MaxAddress looking for unallocated memory ranges.
///
EfiGcdAllocateMaxAddressSearchBottomUp, EfiGcdAllocateMaxAddressSearchBottomUp,
///
/// The GCD memory space map is checked to see if the memory range starting
/// at the specified Address is available.
///
EfiGcdAllocateAddress, EfiGcdAllocateAddress,
///
/// The GCD memory space map is searched from the highest address down to the lowest address
/// looking for unallocated memory ranges.
///
EfiGcdAllocateAnySearchTopDown, EfiGcdAllocateAnySearchTopDown,
///
/// The GCD memory space map is searched from the specified MaxAddress
/// down to the lowest address looking for unallocated memory ranges.
///
EfiGcdAllocateMaxAddressSearchTopDown, EfiGcdAllocateMaxAddressSearchTopDown,
EfiGcdMaxAllocateType EfiGcdMaxAllocateType
} EFI_GCD_ALLOCATE_TYPE; } EFI_GCD_ALLOCATE_TYPE;
@ -606,6 +657,10 @@ EFI_STATUS
#define DXE_SERVICES_REVISION ((1<<16) | (00)) #define DXE_SERVICES_REVISION ((1<<16) | (00))
typedef struct { typedef struct {
///
/// The table header for the DXE Services Table.
/// This header contains the DXE_SERVICES_SIGNATURE and DXE_SERVICES_REVISION values.
///
EFI_TABLE_HEADER Hdr; EFI_TABLE_HEADER Hdr;
// //

View File

@ -27,9 +27,27 @@
/// ///
typedef union { typedef union {
struct { struct {
///
/// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
/// header. The State and IntegrityCheck.Checksum.File fields are assumed
/// to be zero and the checksum is calculated such that the entire header sums to zero.
///
UINT8 Header; UINT8 Header;
///
/// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
/// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
/// checksum of the entire file The State field and the file tail are assumed to be zero
/// and the checksum is calculated such that the entire file sums to zero.
/// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
/// the IntegrityCheck.Checksum.File field must be initialized with a value of
/// 0x55AA. The IntegrityCheck.Checksum.File field is valid any time the
/// EFI_FILE_DATA_VALID bit is set in the State field.
///
UINT8 File; UINT8 File;
} Checksum; } Checksum;
///
/// This is the full 16 bits of the IntegrityCheck field.
///
UINT16 Checksum16; UINT16 Checksum16;
} EFI_FFS_INTEGRITY_CHECK; } EFI_FFS_INTEGRITY_CHECK;
@ -81,11 +99,29 @@ typedef UINT8 EFI_FFS_FILE_STATE;
/// contents and state of the files. /// contents and state of the files.
/// ///
typedef struct { typedef struct {
///
/// This GUID is the file name. It is used to uniquely identify the file.
///
EFI_GUID Name; EFI_GUID Name;
///
/// Used to verify the integrity of the file.
///
EFI_FFS_INTEGRITY_CHECK IntegrityCheck; EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
///
/// Identifies the type of file.
///
EFI_FV_FILETYPE Type; EFI_FV_FILETYPE Type;
///
/// Declares various file attribute bits.
///
EFI_FFS_FILE_ATTRIBUTES Attributes; EFI_FFS_FILE_ATTRIBUTES Attributes;
///
/// The length of the file in bytes, including the FFS header.
///
UINT8 Size[3]; UINT8 Size[3];
///
/// Used to track the state of the file throughout the life of the file from creation to deletion.
///
EFI_FFS_FILE_STATE State; EFI_FFS_FILE_STATE State;
} EFI_FFS_FILE_HEADER; } EFI_FFS_FILE_HEADER;
@ -125,8 +161,15 @@ typedef UINT8 EFI_SECTION_TYPE;
/// Common section header /// Common section header
/// ///
typedef struct { typedef struct {
///
/// A 24-bit unsigned integer that contains the total size of the section in bytes,
/// including the EFI_COMMON_SECTION_HEADER.
///
UINT8 Size[3]; UINT8 Size[3];
EFI_SECTION_TYPE Type; EFI_SECTION_TYPE Type;
///
/// Declares the section type.
///
} EFI_COMMON_SECTION_HEADER; } EFI_COMMON_SECTION_HEADER;
/// ///
@ -145,8 +188,17 @@ typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;
/// section data is compressed. /// section data is compressed.
/// ///
typedef struct { typedef struct {
///
/// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
///
EFI_COMMON_SECTION_HEADER CommonHeader; EFI_COMMON_SECTION_HEADER CommonHeader;
///
/// UINT32 that indicates the size of the section data after decompression.
///
UINT32 UncompressedLength; UINT32 UncompressedLength;
///
/// Indicates which compression algorithm is used.
///
UINT8 CompressionType; UINT8 CompressionType;
} EFI_COMPRESSION_SECTION; } EFI_COMPRESSION_SECTION;
@ -164,7 +216,13 @@ typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
/// Leaf section which contains a single GUID. /// Leaf section which contains a single GUID.
/// ///
typedef struct { typedef struct {
///
/// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
///
EFI_COMMON_SECTION_HEADER CommonHeader; EFI_COMMON_SECTION_HEADER CommonHeader;
///
/// This GUID is defined by the creator of the file. It is a vendor-defined file type.
///
EFI_GUID SubTypeGuid; EFI_GUID SubTypeGuid;
} EFI_FREEFORM_SUBTYPE_GUID_SECTION; } EFI_FREEFORM_SUBTYPE_GUID_SECTION;
@ -177,9 +235,21 @@ typedef struct {
/// Leaf section which is encapsulation defined by specific GUID /// Leaf section which is encapsulation defined by specific GUID
/// ///
typedef struct { typedef struct {
///
/// Common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
///
EFI_COMMON_SECTION_HEADER CommonHeader; EFI_COMMON_SECTION_HEADER CommonHeader;
///
/// GUID that defines the format of the data that follows. It is a vendor-defined section type.
///
EFI_GUID SectionDefinitionGuid; EFI_GUID SectionDefinitionGuid;
///
/// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
///
UINT16 DataOffset; UINT16 DataOffset;
///
/// Bit field that declares some specific characteristics of the section contents.
///
UINT16 Attributes; UINT16 Attributes;
} EFI_GUID_DEFINED_SECTION; } EFI_GUID_DEFINED_SECTION;

View File

@ -91,7 +91,13 @@ typedef UINT32 EFI_FVB_ATTRIBUTES_2;
typedef struct { typedef struct {
///
/// The number of sequential blocks which are of the same size.
///
UINT32 NumBlocks; UINT32 NumBlocks;
///
/// The size of the blocks.
///
UINT32 Length; UINT32 Length;
} EFI_FV_BLOCK_MAP_ENTRY; } EFI_FV_BLOCK_MAP_ENTRY;
@ -99,16 +105,53 @@ typedef struct {
/// Describes the features and layout of the firmware volume. /// Describes the features and layout of the firmware volume.
/// ///
typedef struct { typedef struct {
///
/// The first 16 bytes are reserved to allow for the reset vector of
/// processors whose reset vector is at address 0.
///
UINT8 ZeroVector[16]; UINT8 ZeroVector[16];
///
/// Declares the file system with which the firmware volume is formatted.
///
EFI_GUID FileSystemGuid; EFI_GUID FileSystemGuid;
///
/// Length in bytes of the complete firmware volume, including the header.
///
UINT64 FvLength; UINT64 FvLength;
///
/// Set to EFI_FVH_SIGNATURE
///
UINT32 Signature; UINT32 Signature;
///
/// Declares capabilities and power-on defaults for the firmware volume.
///
EFI_FVB_ATTRIBUTES_2 Attributes; EFI_FVB_ATTRIBUTES_2 Attributes;
///
/// Length in bytes of the complete firmware volume header.
///
UINT16 HeaderLength; UINT16 HeaderLength;
///
/// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
///
UINT16 Checksum; UINT16 Checksum;
///
/// Offset, relative to the start of the header, of the extended header
/// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
///
UINT16 ExtHeaderOffset; UINT16 ExtHeaderOffset;
///
/// This field must always be set to zero.
///
UINT8 Reserved[1]; UINT8 Reserved[1];
///
/// Set to 2. Future versions of this specification may define new header fields and will
/// increment the Revision field accordingly.
///
UINT8 Revision; UINT8 Revision;
///
/// An array of run-length encoded FvBlockMapEntry structures. The array is
/// terminated with an entry of {0,0}.
///
EFI_FV_BLOCK_MAP_ENTRY BlockMap[1]; EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
} EFI_FIRMWARE_VOLUME_HEADER; } EFI_FIRMWARE_VOLUME_HEADER;
@ -123,7 +166,13 @@ typedef struct {
/// Extension header pointed by ExtHeaderOffset of volume header. /// Extension header pointed by ExtHeaderOffset of volume header.
/// ///
typedef struct { typedef struct {
///
/// Firmware volume name.
///
EFI_GUID FvName; EFI_GUID FvName;
///
/// Size of the rest of the extension header, including this structure.
///
UINT32 ExtHeaderSize; UINT32 ExtHeaderSize;
} EFI_FIRMWARE_VOLUME_EXT_HEADER; } EFI_FIRMWARE_VOLUME_EXT_HEADER;
@ -131,7 +180,13 @@ typedef struct {
/// Entry struture for describing FV extension header /// Entry struture for describing FV extension header
/// ///
typedef struct { typedef struct {
///
/// Size of this header extension.
///
UINT16 ExtEntrySize; UINT16 ExtEntrySize;
///
/// Type of the header.
///
UINT16 ExtEntryType; UINT16 ExtEntryType;
} EFI_FIRMWARE_VOLUME_EXT_ENTRY; } EFI_FIRMWARE_VOLUME_EXT_ENTRY;
@ -140,13 +195,18 @@ typedef struct {
/// This extension header provides a mapping between a GUID and an OEM file type. /// This extension header provides a mapping between a GUID and an OEM file type.
/// ///
typedef struct { typedef struct {
///
/// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
///
EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr; EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
///
/// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
/// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
///
UINT32 TypeMask; UINT32 TypeMask;
///
// /// An array of GUIDs, each GUID representing an OEM file type.
// Array of GUIDs. ///
// Each GUID represents an OEM file type.
//
EFI_GUID Types[1]; EFI_GUID Types[1];
} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE; } EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;

View File

@ -43,8 +43,17 @@
/// All HOBs must contain this generic HOB header. /// All HOBs must contain this generic HOB header.
/// ///
typedef struct { typedef struct {
///
/// Identifies the HOB data structure type.
///
UINT16 HobType; UINT16 HobType;
///
/// The length in bytes of the HOB.
///
UINT16 HobLength; UINT16 HobLength;
///
/// This field must always be set to zero.
///
UINT32 Reserved; UINT32 Reserved;
} EFI_HOB_GENERIC_HEADER; } EFI_HOB_GENERIC_HEADER;
@ -59,13 +68,41 @@ typedef struct {
/// This HOB must be the first one in the HOB list. /// This HOB must be the first one in the HOB list.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_HANDOFF.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// The version number pertaining to the PHIT HOB definition.
/// This value is 4 bytes in length to provide an 8-byte aligned entry
/// when it is combined with the 4-byte BootMode.
///
UINT32 Version; UINT32 Version;
///
/// The system boot mode as determined during the HOB producer phase.
///
EFI_BOOT_MODE BootMode; EFI_BOOT_MODE BootMode;
///
/// The highest address location of memory that is allocated for use by the HOB producer
/// phase. This address must be 4-KB aligned to meet page restrictions of UEFI.
///
EFI_PHYSICAL_ADDRESS EfiMemoryTop; EFI_PHYSICAL_ADDRESS EfiMemoryTop;
///
/// The lowest address location of memory that is allocated for use by the HOB producer phase.
///
EFI_PHYSICAL_ADDRESS EfiMemoryBottom; EFI_PHYSICAL_ADDRESS EfiMemoryBottom;
///
/// The highest address location of free memory that is currently available
/// for use by the HOB producer phase.
///
EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop; EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop;
///
/// The lowest address location of free memory that is available for use by the HOB producer phase.
///
EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom; EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom;
///
/// The end of the HOB list.
///
EFI_PHYSICAL_ADDRESS EfiEndOfHobList; EFI_PHYSICAL_ADDRESS EfiEndOfHobList;
} EFI_HOB_HANDOFF_INFO_TABLE; } EFI_HOB_HANDOFF_INFO_TABLE;
@ -112,11 +149,17 @@ typedef struct {
/// ///
/// Describes all memory ranges used during the HOB producer /// Describes all memory ranges used during the HOB producer
/// phase that exist outside the HOB list. This HOB type /// phase that exist outside the HOB list. This HOB type
/// describes how memory is used, /// describes how memory is used, not the physical attributes of memory.
/// not the physical attributes of memory. ///
///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
/// various attributes of the logical memory allocation.
///
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
// //
// Additional data pertaining to the "Name" Guid memory // Additional data pertaining to the "Name" Guid memory
@ -131,7 +174,14 @@ typedef struct {
/// content in the HOB producer phase is executing. /// content in the HOB producer phase is executing.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
/// various attributes of the logical memory allocation.
///
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
} EFI_HOB_MEMORY_ALLOCATION_STACK; } EFI_HOB_MEMORY_ALLOCATION_STACK;
@ -142,7 +192,14 @@ typedef struct {
/// register overflow store. /// register overflow store.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
/// various attributes of the logical memory allocation.
///
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE; } EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;
@ -150,9 +207,24 @@ typedef struct {
/// Defines the location and entry point of the HOB consumer phase. /// Defines the location and entry point of the HOB consumer phase.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
/// various attributes of the logical memory allocation.
///
EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader; EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader;
///
/// The GUID specifying the values of the firmware file system name
/// that contains the HOB consumer phase component.
///
EFI_GUID ModuleName; EFI_GUID ModuleName;
///
/// The address of the memory-mapped firmware volume
/// that contains the HOB consumer phase firmware file.
///
EFI_PHYSICAL_ADDRESS EntryPoint; EFI_PHYSICAL_ADDRESS EntryPoint;
} EFI_HOB_MEMORY_ALLOCATION_MODULE; } EFI_HOB_MEMORY_ALLOCATION_MODULE;
@ -211,11 +283,30 @@ typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
/// host bus during the HOB producer phase. /// host bus during the HOB producer phase.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// A GUID representing the owner of the resource. This GUID is used by HOB
/// consumer phase components to correlate device ownership of a resource.
///
EFI_GUID Owner; EFI_GUID Owner;
///
/// Resource type enumeration as defined by EFI_RESOURCE_TYPE.
///
EFI_RESOURCE_TYPE ResourceType; EFI_RESOURCE_TYPE ResourceType;
///
/// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
///
EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
///
/// Physical start address of the resource region.
///
EFI_PHYSICAL_ADDRESS PhysicalStart; EFI_PHYSICAL_ADDRESS PhysicalStart;
///
/// Number of bytes of the resource region.
///
UINT64 ResourceLength; UINT64 ResourceLength;
} EFI_HOB_RESOURCE_DESCRIPTOR; } EFI_HOB_RESOURCE_DESCRIPTOR;
@ -224,20 +315,34 @@ typedef struct {
/// maintain and manage HOBs with specific GUID. /// maintain and manage HOBs with specific GUID.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// A GUID that defines the contents of this HOB.
///
EFI_GUID Name; EFI_GUID Name;
//
/// // Guid specific data goes here
/// Guid specific data goes here //
///
} EFI_HOB_GUID_TYPE; } EFI_HOB_GUID_TYPE;
/// ///
/// Details the location of firmware volumes that contain firmware files. /// Details the location of firmware volumes that contain firmware files.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// The physical memory-mapped base address of the firmware volume.
///
EFI_PHYSICAL_ADDRESS BaseAddress; EFI_PHYSICAL_ADDRESS BaseAddress;
///
/// The length in bytes of the firmware volume.
///
UINT64 Length; UINT64 Length;
} EFI_HOB_FIRMWARE_VOLUME; } EFI_HOB_FIRMWARE_VOLUME;
@ -246,10 +351,25 @@ typedef struct {
/// from a file within another firmware volume. /// from a file within another firmware volume.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV2.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// The physical memory-mapped base address of the firmware volume.
///
EFI_PHYSICAL_ADDRESS BaseAddress; EFI_PHYSICAL_ADDRESS BaseAddress;
///
/// The length in bytes of the firmware volume.
///
UINT64 Length; UINT64 Length;
///
/// The name of the firmware volume.
///
EFI_GUID FvName; EFI_GUID FvName;
///
/// The name of the firmware file which contained this firmware volume.
///
EFI_GUID FileName; EFI_GUID FileName;
} EFI_HOB_FIRMWARE_VOLUME2; } EFI_HOB_FIRMWARE_VOLUME2;
@ -258,9 +378,21 @@ typedef struct {
/// Describes processor information, such as address space and I/O space capabilities. /// Describes processor information, such as address space and I/O space capabilities.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_CPU.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
///
/// Identifies the maximum physical memory addressability of the processor.
///
UINT8 SizeOfMemorySpace; UINT8 SizeOfMemorySpace;
///
/// Identifies the maximum physical I/O addressability of the processor.
///
UINT8 SizeOfIoSpace; UINT8 SizeOfIoSpace;
///
/// This field will always be set to zero.
///
UINT8 Reserved[6]; UINT8 Reserved[6];
} EFI_HOB_CPU; } EFI_HOB_CPU;
@ -269,6 +401,9 @@ typedef struct {
/// Describes pool memory allocations. /// Describes pool memory allocations.
/// ///
typedef struct { typedef struct {
///
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_POOL.
///
EFI_HOB_GENERIC_HEADER Header; EFI_HOB_GENERIC_HEADER Header;
} EFI_HOB_MEMORY_POOL; } EFI_HOB_MEMORY_POOL;

View File

@ -86,8 +86,17 @@ typedef UINT32 EFI_STATUS_CODE_VALUE;
/// the structure and is Size bytes long. /// the structure and is Size bytes long.
/// ///
typedef struct { typedef struct {
///
/// The size of the structure. This is specified to enable future expansion.
///
UINT16 HeaderSize; UINT16 HeaderSize;
///
/// The size of the data in bytes. This does not include the size of the header structure.
///
UINT16 Size; UINT16 Size;
///
/// The GUID defining the type of the data.
///
EFI_GUID Type; EFI_GUID Type;
} EFI_STATUS_CODE_DATA; } EFI_STATUS_CODE_DATA;

View File

@ -94,8 +94,18 @@ EFI_STATUS
/// The data structure through which a PEIM describes available services to the PEI Foundation. /// The data structure through which a PEIM describes available services to the PEI Foundation.
/// ///
typedef struct { typedef struct {
///
/// This field is a set of flags describing the characteristics of this imported table entry.
/// All flags are defined as EFI_PEI_PPI_DESCRIPTOR_***, which can also be combined into one.
///
UINTN Flags; UINTN Flags;
///
/// The address of the EFI_GUID that names the interface.
///
EFI_GUID *Guid; EFI_GUID *Guid;
///
/// A pointer to the PPI. It contains the information necessary to install a service.
///
VOID *Ppi; VOID *Ppi;
} EFI_PEI_PPI_DESCRIPTOR; } EFI_PEI_PPI_DESCRIPTOR;
@ -104,24 +114,20 @@ typedef struct {
/// Foundation where to invoke the notification service. /// Foundation where to invoke the notification service.
/// ///
struct _EFI_PEI_NOTIFY_DESCRIPTOR { struct _EFI_PEI_NOTIFY_DESCRIPTOR {
///
/// Details if the type of notification is callback or dispatch.
///
UINTN Flags; UINTN Flags;
///
/// The address of the EFI_GUID that names the interface.
///
EFI_GUID *Guid; EFI_GUID *Guid;
///
/// Address of the notification callback function itself within the PEIM.
///
EFI_PEIM_NOTIFY_ENTRY_POINT Notify; EFI_PEIM_NOTIFY_ENTRY_POINT Notify;
}; };
///
/// Describes request of the module to be loaded to
/// the permanent memory once it is available. Unlike most of the other HOBs,
/// this HOB is produced and consumed during the HOB producer phase.
///
typedef struct _EFI_HOB_LOAD_PEIM {
EFI_HOB_GENERIC_HEADER Header;
EFI_PEI_FILE_HANDLE FileHandle;
EFI_PEIM_ENTRY_POINT2 EntryPoint;
EFI_PEIM_ENTRY_POINT2 InMemEntryPoint;
} EFI_HOB_LOAD_PEIM;
/** /**
This service is the first one provided by the PEI Foundation. This function This service is the first one provided by the PEI Foundation. This function
installs an interface in the PEI PPI database by GUID. The purpose of the installs an interface in the PEI PPI database by GUID. The purpose of the

View File

@ -91,7 +91,7 @@ typedef enum {
EfiPciIoOperationBusMasterWrite, EfiPciIoOperationBusMasterWrite,
/// ///
/// Provides both read and write access to system memory by both the processor and a /// Provides both read and write access to system memory by both the processor and a
/// bus master. The buffer is coherent from both the processor¡¯s and the bus master's point of view. /// bus master. The buffer is coherent from both the processor's and the bus master's point of view.
/// ///
EfiPciIoOperationBusMasterCommonBuffer, EfiPciIoOperationBusMasterCommonBuffer,
EfiPciIoOperationMaximum EfiPciIoOperationMaximum
@ -104,11 +104,11 @@ typedef enum {
/// ///
typedef enum { typedef enum {
/// ///
/// Retrieve the PCI controller¡¯s current attributes, and return them in Result. /// Retrieve the PCI controller's current attributes, and return them in Result.
/// ///
EfiPciIoAttributeOperationGet, EfiPciIoAttributeOperationGet,
/// ///
/// Set the PCI controller¡¯s current attributes to Attributes. /// Set the PCI controller's current attributes to Attributes.
/// ///
EfiPciIoAttributeOperationSet, EfiPciIoAttributeOperationSet,
/// ///

View File

@ -32,15 +32,53 @@
/// GPT Partition Table Header /// GPT Partition Table Header
/// ///
typedef struct { typedef struct {
///
/// The table header for the GPT partition Table.
/// This header contains EFI_PTAB_HEADER_ID
///
EFI_TABLE_HEADER Header; EFI_TABLE_HEADER Header;
///
/// The LBA that contains this data structure.
///
EFI_LBA MyLBA; EFI_LBA MyLBA;
///
/// LBA address of the alternate GUID Partition Table Header.
///
EFI_LBA AlternateLBA; EFI_LBA AlternateLBA;
///
/// The first usable logical block that may be used
/// by a partition described by a GUID Partition Entry.
///
EFI_LBA FirstUsableLBA; EFI_LBA FirstUsableLBA;
///
/// The last usable logical block that may be used
/// by a partition described by a GUID Partition Entry.
///
EFI_LBA LastUsableLBA; EFI_LBA LastUsableLBA;
///
/// GUID that can be used to uniquely identify the disk.
///
EFI_GUID DiskGUID; EFI_GUID DiskGUID;
///
/// The starting LBA of the GUID Partition Entry array.
///
EFI_LBA PartitionEntryLBA; EFI_LBA PartitionEntryLBA;
///
/// The number of Partition Entries in the GUID Partition Entry array.
///
UINT32 NumberOfPartitionEntries; UINT32 NumberOfPartitionEntries;
///
/// The size, in bytes, of each the GUID Partition
/// Entry structures in the GUID Partition Entry
/// array. Must be a multiple of 8.
///
UINT32 SizeOfPartitionEntry; UINT32 SizeOfPartitionEntry;
///
/// The CRC32 of the GUID Partition Entry array.
/// Starts at PartitionEntryLBA and is
/// computed over a byte length of
/// NumberOfPartitionEntries * SizeOfPartitionEntry.
///
UINT32 PartitionEntryArrayCRC32; UINT32 PartitionEntryArrayCRC32;
} EFI_PARTITION_TABLE_HEADER; } EFI_PARTITION_TABLE_HEADER;
@ -48,11 +86,35 @@ typedef struct {
/// GPT Partition Entry /// GPT Partition Entry
/// ///
typedef struct { typedef struct {
///
/// Unique ID that defines the purpose and type of this Partition. A value of
/// zero defines that this partition entry is not being used.
///
EFI_GUID PartitionTypeGUID; EFI_GUID PartitionTypeGUID;
///
/// GUID that is unique for every partition entry. Every partition ever
/// created will have a unique GUID.
/// This GUID must be assigned when the GUID Partition Entry is created.
///
EFI_GUID UniquePartitionGUID; EFI_GUID UniquePartitionGUID;
///
/// Starting LBA of the partition defined by this entry
///
EFI_LBA StartingLBA; EFI_LBA StartingLBA;
///
/// Ending LBA of the partition defined by this entry.
///
EFI_LBA EndingLBA; EFI_LBA EndingLBA;
///
/// Attribute bits, all bits reserved by UEFI
/// Bit 0 Required for the platform to function.
/// Bits 1-47 Undefined and must be zero.
/// Bits 48-63 Reserved for GUID specific use.
///
UINT64 Attributes; UINT64 Attributes;
///
/// Unicode string.
///
CHAR16 PartitionName[36]; CHAR16 PartitionName[36];
} EFI_PARTITION_ENTRY; } EFI_PARTITION_ENTRY;

View File

@ -21,32 +21,100 @@
/// Enumeration of memory types introduced in UEFI. /// Enumeration of memory types introduced in UEFI.
/// ///
typedef enum { typedef enum {
///
/// Not used.
///
EfiReservedMemoryType, EfiReservedMemoryType,
///
/// The code portions of a loaded application.
/// (Note that UEFI OS loaders are UEFI applications.)
///
EfiLoaderCode, EfiLoaderCode,
///
/// The data portions of a loaded application and the default data allocation
/// type used by an application to allocate pool memory.
///
EfiLoaderData, EfiLoaderData,
///
/// The code portions of a loaded Boot Services Driver
///
EfiBootServicesCode, EfiBootServicesCode,
///
/// The data portions of a loaded Boot Serves Driver, and the default data
/// allocation type used by a Boot Services Driver to allocate pool memory.
///
EfiBootServicesData, EfiBootServicesData,
///
/// The code portions of a loaded Runtime Services Driver.
///
EfiRuntimeServicesCode, EfiRuntimeServicesCode,
///
/// The data portions of a loaded Runtime Services Driver and the default
/// data allocation type used by a Runtime Services Driver to allocate pool memory.
///
EfiRuntimeServicesData, EfiRuntimeServicesData,
///
/// Free (unallocated) memory.
///
EfiConventionalMemory, EfiConventionalMemory,
///
/// Memory in which errors have been detected.
///
EfiUnusableMemory, EfiUnusableMemory,
///
/// Memory that holds the ACPI tables.
///
EfiACPIReclaimMemory, EfiACPIReclaimMemory,
///
/// Address space reserved for use by the firmware.
///
EfiACPIMemoryNVS, EfiACPIMemoryNVS,
///
/// Used by system firmware to request that a memory-mapped IO region
/// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
///
EfiMemoryMappedIO, EfiMemoryMappedIO,
///
/// System memory-mapped IO region that is used to translate memory
/// cycles to IO cycles by the processor.
///
EfiMemoryMappedIOPortSpace, EfiMemoryMappedIOPortSpace,
///
/// Address space reserved by the firmware for code that is part of the processor.
///
EfiPalCode, EfiPalCode,
EfiMaxMemoryType EfiMaxMemoryType
} EFI_MEMORY_TYPE; } EFI_MEMORY_TYPE;
/// ///
/// Data structure that precedes all of the standard EFI table types. /// Data structure that precedes all of the standard EFI table types.
/// ///
typedef struct { typedef struct {
///
/// A 64-bit signature that identifies the type of table that follows.
/// Unique signatures have been generated for the EFI System Table,
/// the EFI Boot Services Table, and the EFI Runtime Services Table.
///
UINT64 Signature; UINT64 Signature;
///
/// The revision of the EFI Specification to which this table
/// conforms. The upper 16 bits of this field contain the major
/// revision value, and the lower 16 bits contain the minor revision
/// value. The minor revision values are limited to the range of 00..99.
///
UINT32 Revision; UINT32 Revision;
///
/// The size, in bytes, of the entire table including the EFI_TABLE_HEADER.
///
UINT32 HeaderSize; UINT32 HeaderSize;
///
/// The 32-bit CRC for the entire table. This value is computed by
/// setting this field to 0, and computing the 32-bit CRC for HeaderSize bytes.
///
UINT32 CRC32; UINT32 CRC32;
///
/// Reserved field that must be set to 0.
///
UINT32 Reserved; UINT32 Reserved;
} EFI_TABLE_HEADER; } EFI_TABLE_HEADER;
@ -104,9 +172,9 @@ typedef struct _WIN_CERTIFICATE {
#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \ #define EFI_CERT_TYPE_RSA2048_SHA256_GUID \
{0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } } {0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }
// ///
// WIN_CERTIFICATE_UEFI_GUID.CertData /// WIN_CERTIFICATE_UEFI_GUID.CertData
// ///
typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 { typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
UINT32 HashType; UINT32 HashType;
UINT8 PublicKey[256]; UINT8 PublicKey[256];

View File

@ -689,8 +689,27 @@ EFI_STATUS
/// real time clock device as exposed through the EFI interfaces. /// real time clock device as exposed through the EFI interfaces.
/// ///
typedef struct { typedef struct {
///
/// Provides the reporting resolution of the real-time clock device in
/// counts per second. For a normal PC-AT CMOS RTC device, this
/// value would be 1 Hz, or 1, to indicate that the device only reports
/// the time to the resolution of 1 second.
///
UINT32 Resolution; UINT32 Resolution;
///
/// Provides the timekeeping accuracy of the real-time clock in an
/// error rate of 1E-6 parts per million. For a clock with an accuracy
/// of 50 parts per million, the value in this field would be
/// 50,000,000.
///
UINT32 Accuracy; UINT32 Accuracy;
///
/// A TRUE indicates that a time set operation clears the device¡¯s
/// time below the Resolution reporting level. A FALSE
/// indicates that the state below the Resolution level of the
/// device is not cleared when the time is set. Normal PC-AT CMOS
/// RTC devices set this value to FALSE.
///
BOOLEAN SetsToZero; BOOLEAN SetsToZero;
} EFI_TIME_CAPABILITIES; } EFI_TIME_CAPABILITIES;
@ -1527,9 +1546,22 @@ EFI_STATUS
/// EFI Capsule Block Descriptor /// EFI Capsule Block Descriptor
/// ///
typedef struct { typedef struct {
///
/// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.
///
UINT64 Length; UINT64 Length;
union { union {
///
/// Physical address of the data block. This member of the union is
/// used if Length is not equal to zero.
///
EFI_PHYSICAL_ADDRESS DataBlock; EFI_PHYSICAL_ADDRESS DataBlock;
///
/// Physical address of another block of
/// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This
/// member of the union is used if Length is equal to zero. If
/// ContinuationPointer is zero this entry represents the end of the list.
///
EFI_PHYSICAL_ADDRESS ContinuationPointer; EFI_PHYSICAL_ADDRESS ContinuationPointer;
} Union; } Union;
} EFI_CAPSULE_BLOCK_DESCRIPTOR; } EFI_CAPSULE_BLOCK_DESCRIPTOR;
@ -1538,19 +1570,41 @@ typedef struct {
/// EFI Capsule Header /// EFI Capsule Header
/// ///
typedef struct { typedef struct {
///
/// A GUID that defines the contents of a capsule.
///
EFI_GUID CapsuleGuid; EFI_GUID CapsuleGuid;
///
/// The size of the capsule header. This may be larger than the size of
/// the EFI_CAPSULE_HEADER since CapsuleGuid may imply
/// extended header entries
///
UINT32 HeaderSize; UINT32 HeaderSize;
///
/// Bit-mapped list describing the capsule attributes. The Flag values
/// of 0x0000 ¨C 0xFFFF are defined by CapsuleGuid. Flag values
/// of 0x10000 ¨C 0xFFFF0000 are defined by this specification
///
UINT32 Flags; UINT32 Flags;
///
/// Size in bytes of the capsule.
///
UINT32 CapsuleImageSize; UINT32 CapsuleImageSize;
} EFI_CAPSULE_HEADER; } EFI_CAPSULE_HEADER;
// ///
// The EFI System Table entry must point to an array of capsules /// The EFI System Table entry must point to an array of capsules
// that contain the same CapsuleGuid value. The array must be /// that contain the same CapsuleGuid value. The array must be
// prefixed by a UINT32 that represents the size of the array of capsules. /// prefixed by a UINT32 that represents the size of the array of capsules.
// ///
typedef struct { typedef struct {
///
/// the size of the array of capsules.
///
UINT32 CapsuleArrayNumber; UINT32 CapsuleArrayNumber;
///
/// Point to an array of capsules that contain the same CapsuleGuid value.
///
VOID* CapsulePtr[1]; VOID* CapsulePtr[1];
} EFI_CAPSULE_TABLE; } EFI_CAPSULE_TABLE;
@ -1929,14 +1983,40 @@ EFI_STATUS
/// ///
typedef union { typedef union {
struct { struct {
///
/// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
///
UINT32 Revision : 8; UINT32 Revision : 8;
///
/// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
///
UINT32 ShiftPressed : 1; UINT32 ShiftPressed : 1;
///
/// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
///
UINT32 ControlPressed : 1; UINT32 ControlPressed : 1;
///
/// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
///
UINT32 AltPressed : 1; UINT32 AltPressed : 1;
///
/// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
///
UINT32 LogoPressed : 1; UINT32 LogoPressed : 1;
///
/// The Menu key must be pressed (1) or must not be pressed (0).
///
UINT32 MenuPressed : 1; UINT32 MenuPressed : 1;
///
/// The SysReq key must be pressed (1) or must not be pressed (0).
///
UINT32 SysReqPessed : 1; UINT32 SysReqPessed : 1;
UINT32 Reserved : 16; UINT32 Reserved : 16;
///
/// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
/// zero, then only the shift state is considered. If more than one, then the boot option will
/// only be launched if all of the specified keys are pressed with the same shift state.
///
UINT32 InputKeyCount : 2; UINT32 InputKeyCount : 2;
} Options; } Options;
UINT32 PackedValue; UINT32 PackedValue;
@ -1946,10 +2026,27 @@ typedef union {
/// EFI Key Option /// EFI Key Option
/// ///
typedef struct { typedef struct {
EFI_BOOT_KEY_DATA KeyOptions; ///
/// Specifies options about how the key will be processed.
///
EFI_BOOT_KEY_DATA KeyData;
///
/// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
/// which BootOption refers. If the CRC-32s do not match this value, then this key
/// option is ignored.
///
UINT32 BootOptionCrc; UINT32 BootOptionCrc;
///
/// The Boot#### option which will be invoked if this key is pressed and the boot option
/// is active (LOAD_OPTION_ACTIVE is set).
///
UINT16 BootOption; UINT16 BootOption;
//EFI_INPUT_KEY Keys[]; ///
/// The key codes to compare against those returned by the
/// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
/// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
///
//EFI_INPUT_KEY Keys[];
} EFI_KEY_OPTION; } EFI_KEY_OPTION;
#define EFI_KEY_OPTION_SHIFT 0x00000001 #define EFI_KEY_OPTION_SHIFT 0x00000001