/** @file These functions assist in parsing and manipulating a Firmware Volume. Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EFI_FV_LIB_H #define _EFI_FV_LIB_H // // Include files // #include #include #include #include EFI_STATUS InitializeFvLib ( IN VOID *Fv, IN UINT32 FvLength ) ; EFI_STATUS GetFvHeader ( OUT EFI_FIRMWARE_VOLUME_HEADER **FvHeader, OUT UINT32 *FvLength ) ; EFI_STATUS GetNextFile ( IN EFI_FFS_FILE_HEADER *CurrentFile, OUT EFI_FFS_FILE_HEADER **NextFile ) ; EFI_STATUS GetFileByName ( IN EFI_GUID *FileName, OUT EFI_FFS_FILE_HEADER **File ) ; EFI_STATUS GetFileByType ( IN EFI_FV_FILETYPE FileType, IN UINTN Instance, OUT EFI_FFS_FILE_HEADER **File ) ; EFI_STATUS GetSectionByType ( IN EFI_FFS_FILE_HEADER *File, IN EFI_SECTION_TYPE SectionType, IN UINTN Instance, OUT EFI_FILE_SECTION_POINTER *Section ) ; // // will not parse compressed sections // EFI_STATUS VerifyFv ( IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader ) ; EFI_STATUS VerifyFfsFile ( IN EFI_FFS_FILE_HEADER *FfsHeader ) ; UINT32 GetFfsFileLength ( EFI_FFS_FILE_HEADER *FfsHeader ) ; UINT32 GetSectionFileLength ( EFI_COMMON_SECTION_HEADER *SectionHeader ) ; UINT32 GetFfsHeaderLength( IN EFI_FFS_FILE_HEADER *FfsHeader ) ; UINT32 GetSectionHeaderLength( IN EFI_COMMON_SECTION_HEADER *SectionHeader ) ; /*++ Routine Description: Verify the current pointer points to a FFS file header. Arguments: FfsHeader Pointer to an alleged FFS file. Returns: EFI_SUCCESS The Ffs header is valid. EFI_NOT_FOUND This "file" is the beginning of free space. EFI_VOLUME_CORRUPTED The Ffs header is not valid. --*/ UINT32 GetLength ( UINT8 *ThreeByteLength ) ; /*++ Routine Description: Converts a three byte length value into a UINT32. Arguments: ThreeByteLength Pointer to the first of the 3 byte length. Returns: UINT32 Size of the section --*/ EFI_STATUS GetErasePolarity ( OUT BOOLEAN *ErasePolarity ) ; /*++ Routine Description: This function returns with the FV erase polarity. If the erase polarity for a bit is 1, the function return TRUE. Arguments: ErasePolarity A pointer to the erase polarity. Returns: EFI_SUCCESS The function completed successfully. EFI_INVALID_PARAMETER One of the input parameters was invalid. --*/ UINT8 GetFileState ( IN BOOLEAN ErasePolarity, IN EFI_FFS_FILE_HEADER *FfsHeader ) ; /*++ Routine Description: This function returns a the highest state bit in the FFS that is set. It in no way validate the FFS file. Arguments: ErasePolarity The erase polarity for the file state bits. FfsHeader Pointer to a FFS file. Returns: UINT8 The hightest set state of the file. --*/ #endif