19#include <Library/BaseMemoryLib.h>
21#include <Library/UefiBootServicesTableLib.h>
22#include <Protocol/FirmwareVolume2.h>
76 Status = EFI_INVALID_PARAMETER;
87 IN EFI_GUID *NameGuid,
89 IN OUT UINTN *BufferSize,
92 OUT UINT32 *AuthenticationStatus
112 Status = EFI_ACCESS_DENIED;
123 IN EFI_GUID *NameGuid,
125 IN UINTN SectionInstance,
127 IN OUT UINTN *BufferSize,
128 OUT UINT32 *AuthenticationStatus
133 if (!
Buffer || !BufferSize || !AuthenticationStatus) {
134 return EFI_INVALID_PARAMETER;
139 Status =
gBS->AllocatePool (EfiBootServicesData, *BufferSize, (VOID **)
Buffer);
140 if (!EFI_ERROR (Status)) {
144 *AuthenticationStatus = 0;
148 Status =
gBS->AllocatePool (EfiBootServicesData, *BufferSize, (VOID **)
Buffer);
149 if (!EFI_ERROR (Status)) {
153 *AuthenticationStatus = 0;
157 Status =
gBS->AllocatePool (EfiBootServicesData, *BufferSize, (VOID **)
Buffer);
158 if (!EFI_ERROR (Status)) {
162 *AuthenticationStatus = 0;
181 Status = EFI_ACCESS_DENIED;
192 IN UINT32 NumberOfFiles,
200 Status =
mWriteFile (This, NumberOfFiles, WritePolicy, FileData);
206 Status = EFI_WRITE_PROTECTED;
219 OUT EFI_GUID *NameGuid,
233 Status = EFI_ACCESS_DENIED;
265 EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2Interface = NULL;
266 EFI_HANDLE NewHandle = NULL;
268 Status =
gBS->LocateProtocol (
271 (VOID **)&FirmwareVolumeInterface
274 if (EFI_ERROR (Status)) {
287 Status =
gBS->LocateProtocol (
288 &gEfiFirmwareVolume2ProtocolGuid,
290 (VOID **)&FirmwareVolume2Interface
293 if (!EFI_ERROR (Status)) {
297 Status =
gBS->InstallMultipleProtocolInterfaces (
304 if (EFI_ERROR (Status)) {
334 return FirmwareVolumeInterface;
EFI_GUID gAppleArrowCursorImageGuid
EFI_GUID gAppleArrowCursor2xImageGuid
EFI_GUID gAppleImageListGuid
UINT64 FRAMEWORK_EFI_FV_ATTRIBUTES
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_GET_NEXT_FILE)(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)
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_READ_SECTION)(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)
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_SET_ATTRIBUTES)(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_GET_ATTRIBUTES)(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_WRITE_FILE)(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN UINT32 NumberOfFiles, IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData)
EFI_STATUS(EFIAPI * FRAMEWORK_EFI_FV_READ_FILE)(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)
UINT32 FRAMEWORK_EFI_FV_WRITE_POLICY
EFI_GUID gEfiFirmwareVolumeProtocolGuid
EFI_STATUS EFIAPI InitializeFirmwareVolume2(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
DMG_SIZE_DEVICE_PATH Size
STATIC FRAMEWORK_EFI_FV_GET_ATTRIBUTES mGetVolumeAttributes
STATIC EFI_STATUS EFIAPI ReadFileEx(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)
STATIC FRAMEWORK_EFI_FV_WRITE_FILE mWriteFile
STATIC EFI_FIRMWARE_VOLUME_PROTOCOL mFirmwareVolume
STATIC EFI_STATUS EFIAPI GetNextFileEx(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)
STATIC EFI_STATUS EFIAPI GetVolumeAttributesEx(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
STATIC FRAMEWORK_EFI_FV_SET_ATTRIBUTES mSetVolumeAttributes
STATIC EFI_STATUS EFIAPI ReadSectionEx(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)
STATIC FRAMEWORK_EFI_FV_GET_NEXT_FILE mGetNextFile
EFI_FIRMWARE_VOLUME_PROTOCOL * OcFirmwareVolumeInstallProtocol(IN BOOLEAN Reinstall)
STATIC FRAMEWORK_EFI_FV_READ_FILE mReadFile
STATIC FRAMEWORK_EFI_FV_READ_SECTION mReadSection
STATIC EFI_STATUS EFIAPI SetVolumeAttributesEx(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes)
STATIC EFI_STATUS EFIAPI WriteFileEx(IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, IN UINT32 NumberOfFiles, IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData)
STATIC IMAGE_ENTRY mAppleImageTable[]
STATIC UINT8 mAppleArrowCursor2xImage[]
STATIC UINT8 mAppleArrowCursorImage[]
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
FRAMEWORK_EFI_FV_SET_ATTRIBUTES SetVolumeAttributes
FRAMEWORK_EFI_FV_GET_NEXT_FILE GetNextFile
FRAMEWORK_EFI_FV_GET_ATTRIBUTES GetVolumeAttributes
FRAMEWORK_EFI_FV_WRITE_FILE WriteFile
FRAMEWORK_EFI_FV_READ_FILE ReadFile
FRAMEWORK_EFI_FV_READ_SECTION ReadSection