4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The internal header file for firmware volume related definitions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _FWVOL_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _FWVOL_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "PeiMain.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define GET_OCCUPIED_SIZE(ActualSize, Alignment) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((ActualSize) + (((Alignment) - ((ActualSize) & ((Alignment) - 1))) & ((Alignment) - 1)))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PEI_FW_VOL_SIGNATURE SIGNATURE_32('P','F','W','V')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN IsFfs3Fv;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI Fv;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PEI_FW_VOL_INSTANCE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PEI_FW_VOL_INSTANCE_FROM_FV_THIS(a) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR(a, PEI_FW_VOL_INSTANCE, Fv, PEI_FW_VOL_SIGNATURE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Process a firmware volume and create a volume handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Create a volume handle from the information in the buffer. For
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memory-mapped firmware volumes, Buffer and BufferSize refer to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the start of the firmware volume and the firmware volume size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync For non memory-mapped firmware volumes, this points to a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer which contains the necessary information for creating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the firmware volume handle. Normally, these values are derived
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync from the EFI_FIRMWARE_VOLUME_INFO_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Buffer Points to the start of the buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param BufferSize Size of the buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle Points to the returned firmware volume
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync handle. The firmware volume handle must
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be unique within the system.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Firmware volume handle created.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_VOLUME_CORRUPTED Volume was corrupt.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiProcessVolume (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN BufferSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_PEI_FV_HANDLE *FvHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Finds the next file of the specified type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This service enables PEI modules to discover additional firmware files.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The FileHandle must be unique within the system.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SearchType A filter to find only files of this type. Type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FV_FILETYPE_ALL causes no filtering to be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle Handle of firmware volume in which to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync search.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileHandle Points to the current handle from which to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync begin searching or NULL to start at the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync beginning of the firmware volume. Updated
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync upon return to reflect the file found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The file was found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The file was not found. FileHandle contains NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiFindFileByType (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FV_FILETYPE SearchType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FV_HANDLE FvHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_PEI_FILE_HANDLE *FileHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Find a file within a volume by its name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This service searches for files with a specific name, within
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync either the specified firmware volume or all firmware volumes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileName A pointer to the name of the file to find
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync within the firmware volume.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle Upon entry, the pointer to the firmware
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync volume to search or NULL if all firmware
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync volumes should be searched. Upon exit, the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync actual firmware volume in which the file was
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileHandle Upon exit, points to the found file's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync handle or NULL if it could not be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS File was found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND File was not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER FvHandle or FileHandle or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FileName was NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiFindFileByName (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_GUID *FileName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FV_HANDLE *FvHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_PEI_FILE_HANDLE *FileHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Find the next matching section in the firmware file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This service enables PEI modules to discover sections
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of a given type within a valid file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SearchType A filter to find only sections of this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileHandle Handle of firmware file in which to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync search.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SectionData Updated upon return to point to the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync section found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Section was found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND Section of the specified type was not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync found. SectionData contains NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiFindSectionByType (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SECTION_TYPE SearchType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FILE_HANDLE FileHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT VOID **SectionData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Returns information about a specific file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns information about a specific
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync file, including its file name, type, attributes, starting
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync address and size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileHandle Handle of the file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileInfo Upon exit, points to the file's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS File information returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER If FileHandle does not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync represent a valid file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER If FileInfo is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiGetFileInfo (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FILE_HANDLE FileHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_FV_FILE_INFO *FileInfo
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns information about the firmware volume.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Points to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle Handle to the firmware handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VolumeInfo Points to the returned firmware volume
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Information returned successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER FvHandle does not indicate a valid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync firmware volume or VolumeInfo is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPeiFfsFvPpiGetVolumeInfo (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FV_HANDLE FvHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_FV_INFO *VolumeInfo
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Convert the handle of FV to pointer of corresponding PEI_CORE_FV_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle The handle of a FV.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL if can not find.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Pointer of corresponding PEI_CORE_FV_HANDLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPEI_CORE_FV_HANDLE *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFvHandleToCoreHandle (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_FV_HANDLE FvHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Given the input file pointer, search for the next matching file in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FFS volume as defined by SearchType. The search starts from FileHeader inside
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the Firmware Volume defined by FwVolHeader.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvHandle Pointer to the FV header of the volume to search
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileName File name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SearchType Filter to find only files of this type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FileHandle This parameter must point to a valid FFS volume.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AprioriFile Pointer to AprioriFile image in this FV if has
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_NOT_FOUND No files matching the search criteria were found
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Success to search given file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFindFileEx (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_PEI_FV_HANDLE FvHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_GUID *FileName, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FV_FILETYPE SearchType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_PEI_FILE_HANDLE *FileHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_PEI_FV_HANDLE *AprioriFile OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Report the information for a new discoveried FV in unknown format.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If the EFI_PEI_FIRMWARE_VOLUME_PPI has not been install for specifical FV format, but
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the FV in this FV format has been discoveried, then the information of this FV
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will be cached into PEI_CORE_INSTANCE's UnknownFvInfo array.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Also a notification would be installed for unknown FV format guid, if EFI_PEI_FIRMWARE_VOLUME_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is installed later by platform's PEIM, the original unknown FV will be processed by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync using new installed EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PrivateData Point to instance of PEI_CORE_INSTANCE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Format Point to the unknown FV format guid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvInfo Point to FvInfo buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvInfoSize The size of FvInfo buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The FV info array in PEI_CORE_INSTANCE has no more spaces.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Success to add the information for unknown FV.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncAddUnknownFormatFvInfo (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_CORE_INSTANCE *PrivateData,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *Format,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *FvInfo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 FvInfoSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Find the FV information according to FV format guid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This routine also will remove the FV information found by given FV format guid from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PrivateData->UnknownFvInfo[].
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PrivateData Point to instance of PEI_CORE_INSTANCE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Format Point to given FV format guid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvInfo On return, the pointer of FV information buffer in given FV format guid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvInfoSize On return, the size of FV information buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The FV is not found for new installed EFI_PEI_FIRMWARE_VOLUME_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Success to find a FV which could be processed by new installed EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFindUnknownFormatFvInfo (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_CORE_INSTANCE *PrivateData,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *Format,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT VOID **FvInfo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *FvInfoSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Notification callback function for EFI_PEI_FIRMWARE_VOLUME_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync When a EFI_PEI_FIRMWARE_VOLUME_PPI is installed to support new FV format, this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync routine is called to process all discoveried FVs in this format.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param NotifyDescriptor Address of the notification descriptor data structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Ppi Address of the PPI that was installed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The notification callback is processed correctly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThirdPartyFvPpiNotifyCallback (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Ppi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif