ReadFfsLib.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /** @file
  2. Read FFS Library.
  3. @copyright
  4. Copyright 2009 - 2021 Intel Corporation. <BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #ifndef __READ_FFS__
  8. #define __READ_FFS__
  9. #include <Base.h>
  10. #include <Pi/PiFirmwareVolume.h>
  11. #define MAX_COMPRESS_ITEM 196
  12. #define MAX_FFS_BUFFER_SIZE 8*1024
  13. #define COMPRESS_DUPLICATE 1
  14. #define COMPRESS_SINGLE 2
  15. #pragma pack(1)
  16. typedef struct {
  17. UINT16 Value;
  18. UINT16 Length;
  19. UINT8 Type;
  20. UINT16 Offset;
  21. } COMPRESS_ITEM;
  22. typedef struct {
  23. UINT32 Signature;
  24. UINT32 Count;
  25. //COMPRESS_ITEM item[Count];
  26. } COMPRESS_HOBO_DATA;
  27. #pragma pack()
  28. BOOLEAN NormalHobToCompressHob(IN OUT VOID* hobAddr,IN OUT UINTN* size);
  29. BOOLEAN CompressHobToNormalHob(IN OUT VOID* hobAddr,OUT UINTN* size);
  30. //read a FFS from FV.
  31. UINT8*
  32. PreMemReadFFSFile (
  33. IN EFI_FIRMWARE_VOLUME_HEADER* FwVolHeader,
  34. IN EFI_GUID FFSGuid,
  35. IN UINT32 FFSDataSize,
  36. IN BOOLEAN skipheader
  37. );
  38. EFI_STATUS
  39. ReadFFSFile (
  40. IN EFI_FIRMWARE_VOLUME_HEADER* FwVolHeader,
  41. IN EFI_GUID FFSGuid,
  42. IN UINT32 FFSDataSize,
  43. IN OUT VOID *FFSData,
  44. OUT UINT32 *FFSSize,
  45. IN BOOLEAN skipheader
  46. );
  47. EFI_STATUS ValidateCommonFvHeader ( EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader );
  48. #endif