2 # This file is used to define the FV Header C Struct.
4 # Copyright (c) 2021-, Intel Corporation. All rights reserved.<BR>
5 # SPDX-License-Identifier: BSD-2-Clause-Patent
10 from FirmwareStorageFormat
.Common
import *
12 class EFI_FV_BLOCK_MAP_ENTRY(Structure
):
15 ('NumBlocks', c_uint32
),
20 class EFI_FIRMWARE_VOLUME_HEADER(Structure
):
22 ('ZeroVector', ARRAY(c_uint8
, 16)),
23 ('FileSystemGuid', GUID
),
24 ('FvLength', c_uint64
),
25 ('Signature', c_uint32
),
26 ('Attributes', c_uint32
),
27 ('HeaderLength', c_uint16
),
28 ('Checksum', c_uint16
),
29 ('ExtHeaderOffset', c_uint16
),
30 ('Reserved', c_uint8
),
31 ('Revision', c_uint8
),
32 ('BlockMap', ARRAY(EFI_FV_BLOCK_MAP_ENTRY
, 1)),
35 def Refine_FV_Header(nums
):
36 class EFI_FIRMWARE_VOLUME_HEADER(Structure
):
38 ('ZeroVector', ARRAY(c_uint8
, 16)),
39 ('FileSystemGuid', GUID
),
40 ('FvLength', c_uint64
),
41 ('Signature', c_uint32
),
42 ('Attributes', c_uint32
),
43 ('HeaderLength', c_uint16
),
44 ('Checksum', c_uint16
),
45 ('ExtHeaderOffset', c_uint16
),
46 ('Reserved', c_uint8
),
47 ('Revision', c_uint8
),
48 ('BlockMap', ARRAY(EFI_FV_BLOCK_MAP_ENTRY
, nums
)),
50 return EFI_FIRMWARE_VOLUME_HEADER
52 class EFI_FIRMWARE_VOLUME_EXT_HEADER(Structure
):
55 ('ExtHeaderSize', c_uint32
)
58 class EFI_FIRMWARE_VOLUME_EXT_ENTRY(Structure
):
60 ('ExtEntrySize', c_uint16
),
61 ('ExtEntryType', c_uint16
)
64 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE_0(Structure
):
66 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
67 ('TypeMask', c_uint32
)
70 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure
):
72 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
73 ('TypeMask', c_uint32
),
74 ('Types', ARRAY(GUID
, 1))
77 def Refine_FV_EXT_ENTRY_OEM_TYPE_Header(nums
: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE
:
78 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure
):
80 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
81 ('TypeMask', c_uint32
),
82 ('Types', ARRAY(GUID
, nums
))
84 return EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure
)
86 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE_0(Structure
):
88 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
92 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure
):
94 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
96 ('Data', ARRAY(c_uint8
, 1))
99 def Refine_FV_EXT_ENTRY_GUID_TYPE_Header(nums
: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE
:
100 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure
):
102 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
103 ('FormatType', GUID
),
104 ('Data', ARRAY(c_uint8
, nums
))
106 return EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure
)
108 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE(Structure
):
110 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY
),
111 ('UsedSize', c_uint32
)