/** @file Read FFS Library. @copyright Copyright 2009 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __READ_FFS__ #define __READ_FFS__ #include #include #define MAX_COMPRESS_ITEM 196 #define MAX_FFS_BUFFER_SIZE 8*1024 #define COMPRESS_DUPLICATE 1 #define COMPRESS_SINGLE 2 #pragma pack(1) typedef struct { UINT16 Value; UINT16 Length; UINT8 Type; UINT16 Offset; } COMPRESS_ITEM; typedef struct { UINT32 Signature; UINT32 Count; //COMPRESS_ITEM item[Count]; } COMPRESS_HOBO_DATA; #pragma pack() BOOLEAN NormalHobToCompressHob(IN OUT VOID* hobAddr,IN OUT UINTN* size); BOOLEAN CompressHobToNormalHob(IN OUT VOID* hobAddr,OUT UINTN* size); //read a FFS from FV. UINT8* PreMemReadFFSFile ( IN EFI_FIRMWARE_VOLUME_HEADER* FwVolHeader, IN EFI_GUID FFSGuid, IN UINT32 FFSDataSize, IN BOOLEAN skipheader ); EFI_STATUS ReadFFSFile ( IN EFI_FIRMWARE_VOLUME_HEADER* FwVolHeader, IN EFI_GUID FFSGuid, IN UINT32 FFSDataSize, IN OUT VOID *FFSData, OUT UINT32 *FFSSize, IN BOOLEAN skipheader ); EFI_STATUS ValidateCommonFvHeader ( EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader ); #endif