/** @file | |
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> | |
Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _FV_LIB_H_ | |
#define _FV_LIB_H_ | |
#include <Uefi.h> | |
#include <Pi/PiFirmwareVolume.h> | |
#include <Pi/PiFirmwareFile.h> | |
/** | |
Given the input file pointer, search for the next matching file in the | |
FFS volume as defined by SearchType. The search starts from FileHeader inside | |
the Firmware Volume defined by FwVolHeader. | |
@param SearchType Filter to find only files of this type. | |
Type EFI_FV_FILETYPE_ALL causes no filtering to be done. | |
@param FwVolHeader Pointer to the FV header of the volume to search. | |
This parameter must point to a valid FFS volume. | |
@param FileHeader Pointer to the current file from which to begin searching. | |
This pointer will be updated upon return to reflect the file found. | |
@retval EFI_NOT_FOUND No files matching the search criteria were found | |
@retval EFI_SUCCESS | |
**/ | |
EFI_STATUS | |
EFIAPI | |
FfsFindNextFile ( | |
IN EFI_FV_FILETYPE SearchType, | |
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, | |
IN OUT EFI_FFS_FILE_HEADER **FileHeader | |
); | |
/** | |
Given the input file pointer, search for the next matching section in the | |
FFS volume. | |
@param SearchType Filter to find only sections of this type. | |
@param FfsFileHeader Pointer to the current file to search. | |
@param SectionHeader Pointer to the Section matching SectionType in FfsFileHeader. | |
NULL if section not found | |
@retval EFI_NOT_FOUND No files matching the search criteria were found | |
@retval EFI_SUCCESS | |
**/ | |
EFI_STATUS | |
EFIAPI | |
FfsFindSection ( | |
IN EFI_SECTION_TYPE SectionType, | |
IN EFI_FFS_FILE_HEADER *FfsFileHeader, | |
IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader | |
); | |
/** | |
Locates a section within a series of sections | |
with the specified section type. | |
@param[in] Sections The sections to search | |
@param[in] SizeOfSections Total size of all sections | |
@param[in] SectionType The section type to locate | |
@param[out] FoundSection The FFS section if found | |
@retval EFI_SUCCESS The file and section was found | |
@retval EFI_NOT_FOUND The file and section was not found | |
@retval EFI_VOLUME_CORRUPTED The firmware volume was corrupted | |
**/ | |
EFI_STATUS | |
EFIAPI | |
FindFfsSectionInSections ( | |
IN VOID *Sections, | |
IN UINTN SizeOfSections, | |
IN EFI_SECTION_TYPE SectionType, | |
OUT EFI_COMMON_SECTION_HEADER **FoundSection | |
); | |
/** | |
Given the input file pointer, search for the next matching section in the | |
FFS volume. | |
@param SearchType Filter to find only sections of this type. | |
@param FfsFileHeader Pointer to the current file to search. | |
@param SectionData Pointer to the Section matching SectionType in FfsFileHeader. | |
NULL if section not found | |
@param SectionDataSize The size of SectionData | |
@retval EFI_NOT_FOUND No files matching the search criteria were found | |
@retval EFI_SUCCESS | |
**/ | |
EFI_STATUS | |
EFIAPI | |
FfsFindSectionData ( | |
IN EFI_SECTION_TYPE SectionType, | |
IN EFI_FFS_FILE_HEADER *FfsFileHeader, | |
OUT VOID **SectionData, | |
OUT UINTN *SectionDataSize | |
); | |
#endif |