1 /** @file
2 EFI Firmware Volume routines which work on a Fv image in buffers.
3 
4 Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution.  The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9 
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 
15 #ifndef FirmwareVolumeBuffer_h_INCLUDED
16 #define FirmwareVolumeBuffer_h_INCLUDED
17 
18 #include "Common/UefiBaseTypes.h"
19 #include "Common/PiFirmwareFile.h"
20 #include "Common/PiFirmwareVolume.h"
21 
22 EFI_STATUS
23 FvBufAddFile (
24   IN OUT VOID *Fv,
25   IN VOID *File
26   );
27 
28 EFI_STATUS
29 FvBufAddFileWithExtend (
30   IN OUT VOID **Fv,
31   IN VOID *File
32   );
33 
34 EFI_STATUS
35 FvBufAddVtfFile (
36   IN OUT VOID *Fv,
37   IN VOID *File
38   );
39 
40 EFI_STATUS
41 FvBufChecksumFile (
42   IN OUT VOID *FfsFile
43   );
44 
45 EFI_STATUS
46 FvBufChecksumHeader (
47   IN OUT VOID *Fv
48   );
49 
50 EFI_STATUS
51 FvBufClearAllFiles (
52   IN OUT VOID *Fv
53   );
54 
55 VOID
56 FvBufCompact3ByteSize (
57   OUT VOID* SizeDest,
58   IN UINT32 Size
59   );
60 
61 EFI_STATUS
62 FvBufCountSections (
63   IN VOID* FfsFile,
64   IN UINTN* Count
65   );
66 
67 EFI_STATUS
68 FvBufDuplicate (
69   IN VOID *SourceFv,
70   IN OUT VOID **DestinationFv
71   );
72 
73 UINT32
74 FvBufExpand3ByteSize (
75   IN VOID* Size
76   );
77 
78 UINT32
79 FvBufGetFfsFileSize (
80   IN EFI_FFS_FILE_HEADER *Ffs
81   );
82 
83 UINT32
84 FvBufGetFfsHeaderSize (
85   IN EFI_FFS_FILE_HEADER *Ffs
86   );
87 
88 EFI_STATUS
89 FvBufExtend (
90   IN VOID **Fv,
91   IN UINTN Size
92   );
93 
94 EFI_STATUS
95 FvBufFindFileByName (
96   IN VOID *Fv,
97   IN EFI_GUID *Name,
98   OUT VOID **File
99   );
100 
101 EFI_STATUS
102 FvBufFindFileByType (
103   IN VOID *Fv,
104   IN EFI_FV_FILETYPE Type,
105   OUT VOID **File
106   );
107 
108 EFI_STATUS
109 FvBufFindNextFile (
110   IN VOID *Fv,
111   IN OUT UINTN *Key,
112   OUT VOID **File
113   );
114 
115 EFI_STATUS
116 FvBufFindNextSection (
117   IN VOID *SectionsStart,
118   IN UINTN TotalSectionsSize,
119   IN OUT UINTN *Key,
120   OUT VOID **Section
121   );
122 
123 EFI_STATUS
124 FvBufFindSectionByType (
125   IN VOID *FfsFile,
126   IN UINT8 Type,
127   OUT VOID **Section
128   );
129 
130 EFI_STATUS
131 FvBufGetFileRawData (
132   IN  VOID*     FfsFile,
133   OUT VOID**    RawData,
134   OUT UINTN*    RawDataSize
135   );
136 
137 EFI_STATUS
138 FvBufGetSize (
139   IN VOID *Fv,
140   OUT UINTN *Size
141   );
142 
143 EFI_STATUS
144 FvBufPackageFreeformRawFile (
145   IN EFI_GUID*  Filename,
146   IN VOID*      RawData,
147   IN UINTN      RawDataSize,
148   OUT VOID**    FfsFile
149   );
150 
151 EFI_STATUS
152 FvBufRemoveFile (
153   IN OUT VOID *Fv,
154   IN EFI_GUID *Name
155   );
156 
157 EFI_STATUS
158 FvBufUnifyBlockSizes (
159   IN OUT VOID *Fv,
160   IN UINTN BlockSize
161   );
162 
163 EFI_STATUS
164 FvBufShrinkWrap (
165   IN VOID *Fv
166   );
167 
168 #endif // #ifndef FirmwareVolumeBuffer_h_INCLUDED
169 
170