23#include <Protocol/FirmwareVolume2.h>
25#include <Library/BaseLib.h>
26#include <Library/DebugLib.h>
27#include <Library/UefiBootServicesTableLib.h>
28#include <Library/UefiDriverEntryPoint.h>
29#include <Library/UefiLib.h>
30#include <Library/MemoryAllocationLib.h>
32#define FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('f', 'v', 't', 'h')
40#define FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS(a) CR (a, FIRMWARE_VOLUME_PRIVATE_DATA, FirmwareVolume, FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE)
80 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
85 Status = FirmwareVolume2->GetVolumeAttributes (
89 if (!EFI_ERROR (Status)) {
117 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
124 Fv2Attributes = (*Attributes & 0x1ff);
125 Status = FirmwareVolume2->SetVolumeAttributes (
169 IN EFI_GUID *NameGuid,
171 IN OUT UINTN *BufferSize,
174 OUT UINT32 *AuthenticationStatus
178 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
184 Status = FirmwareVolume2->ReadFile (
197 *FileAttributes = *FileAttributes & EFI_FV_FILE_ATTRIB_ALIGNMENT;
236 IN EFI_GUID *NameGuid,
238 IN UINTN SectionInstance,
240 IN OUT UINTN *BufferSize,
241 OUT UINT32 *AuthenticationStatus
245 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
250 return FirmwareVolume2->ReadSection (
288 IN UINT32 NumberOfFiles,
294 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
303 ASSERT (PiFileData != NULL);
308 for (Index = 0; Index < NumberOfFiles; Index++) {
309 PiFileData[Index].
FileAttributes |= EFI_FV_FILE_ATTRIB_MEMORY_MAPPED;
312 Status = FirmwareVolume2->WriteFile (
319 FreePool (PiFileData);
349 OUT EFI_GUID *NameGuid,
355 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2;
361 Status = FirmwareVolume2->GetNextFile (
373 *Attributes = *Attributes & EFI_FV_FILE_ATTRIB_ALIGNMENT;
425 BufferSize =
sizeof (
Handle);
426 Status =
gBS->LocateHandle (
428 &gEfiFirmwareVolume2ProtocolGuid,
433 if (EFI_ERROR (Status)) {
443 Status =
gBS->HandleProtocol (
446 (VOID **)&FirmwareVolume
448 if (!EFI_ERROR (Status)) {
456 if (Private == NULL) {
463 Status =
gBS->HandleProtocol (
465 &gEfiFirmwareVolume2ProtocolGuid,
468 if (EFI_ERROR (Status)) {
469 DEBUG ((DEBUG_INFO,
"OCFV: HandleProtocol FirmwareVolume2 failure: %r\n", Status));
481 Status =
gBS->InstallMultipleProtocolInterfaces (
487 if (EFI_ERROR (Status)) {
488 DEBUG ((DEBUG_INFO,
"OCFV: Install FirmwareVolume protocol failure: %r\n", Status));
508 IN EFI_HANDLE ImageHandle,
509 IN EFI_SYSTEM_TABLE *SystemTable
512 EfiCreateProtocolNotifyEvent (
513 &gEfiFirmwareVolume2ProtocolGuid,
UINT64 FRAMEWORK_EFI_FV_ATTRIBUTES
#define EFI_FV_ALIGNMENT_2
UINT32 FRAMEWORK_EFI_FV_WRITE_POLICY
EFI_GUID gEfiFirmwareVolumeProtocolGuid
EFI_STATUS EFIAPI InitializeFirmwareVolume2(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI FvWriteFile(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN UINT32 NumberOfFiles, IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData)
FRAMEWORK_EFI_FV_ATTRIBUTES Fv2AttributesToFvAttributes(IN EFI_FV_ATTRIBUTES Fv2Attributes)
EFI_STATUS EFIAPI FvGetVolumeAttributes(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
VOID EFIAPI FvNotificationEvent(IN EFI_EVENT Event, IN VOID *Context)
FIRMWARE_VOLUME_PRIVATE_DATA gFirmwareVolumePrivateDataTemplate
EFI_STATUS EFIAPI FvReadFile(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN EFI_GUID *NameGuid, IN OUT VOID **Buffer, IN OUT UINTN *BufferSize, OUT EFI_FV_FILETYPE *FoundType, OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, OUT UINT32 *AuthenticationStatus)
EFI_EVENT mFvRegistration
EFI_STATUS EFIAPI FvSetVolumeAttributes(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
EFI_STATUS EFIAPI FvGetNextFile(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN OUT VOID *Key, IN OUT EFI_FV_FILETYPE *FileType, OUT EFI_GUID *NameGuid, OUT EFI_FV_FILE_ATTRIBUTES *Attributes, OUT UINTN *Size)
#define FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE
EFI_STATUS EFIAPI FvReadSection(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN EFI_GUID *NameGuid, IN EFI_SECTION_TYPE SectionType, IN UINTN SectionInstance, IN OUT VOID **Buffer, IN OUT UINTN *BufferSize, OUT UINT32 *AuthenticationStatus)
#define FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS(a)
DMG_SIZE_DEVICE_PATH Size
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
APPLE_EVENT_HANDLE Handle
UINT64 EFIAPI RShiftU64(IN UINT64 Operand, IN UINTN Count)
EFI_FV_FILE_ATTRIBUTES FileAttributes
EFI_FIRMWARE_VOLUME2_PROTOCOL * FirmwareVolume2
EFI_FIRMWARE_VOLUME_PROTOCOL FirmwareVolume