mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 20:43:59 +00:00 
			
		
		
		
	 f7496d7173
			
		
	
	
		f7496d7173
		
	
	
	
	
		
			
			1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
		
			
				
	
	
		
			196 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| These functions assist in parsing and manipulating a Firmware Volume.
 | |
| 
 | |
| Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| This program and the accompanying materials
 | |
| are licensed and made available under the terms and conditions of the BSD License
 | |
| which accompanies this distribution.  The full text of the license may be found at
 | |
| http://opensource.org/licenses/bsd-license.php
 | |
| 
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _EFI_FV_LIB_H
 | |
| #define _EFI_FV_LIB_H
 | |
| 
 | |
| //
 | |
| // Include files
 | |
| //
 | |
| #include <string.h>
 | |
| 
 | |
| #include <Common/UefiBaseTypes.h>
 | |
| #include <Common/PiFirmwareFile.h>
 | |
| #include <Common/PiFirmwareVolume.h>
 | |
| 
 | |
| 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
 |