X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FInclude%2FPpi%2FFirmwareVolume.h;h=e38480701c2c53cbb16bf65de917be0c8695db5d;hb=76c09700edc67686b29662e81a3ca7d947594ce5;hp=5a8f87c49bdf96fa0c65bd32de649f34c40fd191;hpb=4ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086;p=mirror_edk2.git diff --git a/MdePkg/Include/Ppi/FirmwareVolume.h b/MdePkg/Include/Ppi/FirmwareVolume.h index 5a8f87c49b..e38480701c 100644 --- a/MdePkg/Include/Ppi/FirmwareVolume.h +++ b/MdePkg/Include/Ppi/FirmwareVolume.h @@ -1,30 +1,28 @@ /** @file This file provides functions for accessing a memory-mapped firmware volume of a specific format. - Copyright (c) 2006 - 2007, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @par Revision Reference: - This PPI is defined in PI. - Version 1.00 + This PPI is from PI Version 1.0 errata. **/ #ifndef __FIRMWARE_VOLUME_PPI_H__ #define __FIRMWARE_VOLUME_PPI_H__ -// -// The GUID for this PPI is the same as the firmware volume format GUID. -// can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for a user-defined format. The -// EFI_FIRMWARE_FILE_SYSTEM2_GUID is the PI Firmware Volume format. -// - +/// +/// The GUID for this PPI is the same as the firmware volume format GUID. +/// The FV format can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for a user-defined +/// format. The EFI_FIRMWARE_FILE_SYSTEM2_GUID is the PI Firmware Volume format. +/// typedef struct _EFI_PEI_FIRMWARE_VOLUME_PPI EFI_PEI_FIRMWARE_VOLUME_PPI; @@ -38,204 +36,240 @@ typedef struct _EFI_PEI_FIRMWARE_VOLUME_PPI EFI_PEI_FIRMWARE_VOLUME_PPI; buffer which contains the necessary information for creating the firmware volume handle. Normally, these values are derived from the EFI_FIRMWARE_VOLUME_INFO_PPI. - - - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI - @param Buffer Points to the start of the buffer. - @param BufferSize Size of the buffer. - @param FvHandle Points to the returned firmware volume - handle. The firmware volume handle must - be unique within the system. - - - @retval EFI_SUCCESS Firmware volume handle. + + + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param Buffer Points to the start of the buffer. + @param BufferSize Size of the buffer. + @param FvHandle Points to the returned firmware volume + handle. The firmware volume handle must + be unique within the system. + + @retval EFI_SUCCESS Firmware volume handle created. @retval EFI_VOLUME_CORRUPTED Volume was corrupt. **/ typedef EFI_STATUS (EFIAPI *EFI_PEI_FV_PROCESS_FV)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST VOID *Buffer, - IN CONST UINTN BufferSize, - OUT EFI_PEI_FV_HANDLE *FvHandle + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN VOID *Buffer, + IN UINTN BufferSize, + OUT EFI_PEI_FV_HANDLE *FvHandle ); /** Finds the next file of the specified type. - This service enables PEI modules to discover additional firmware files. + This service enables PEI modules to discover additional firmware files. The FileHandle must be unique within the system. - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI. SearchType A filter - to find only files of this type. Type - EFI_FV_FILETYPE_ALL causes no filtering to be - done. - @param FvHandle Handle of firmware volume in which to - search. - - @param FileHandle Points to the current handle from which to - begin searching or NULL to start at the - beginning of the firmware volume. Updated - upon return to reflect the file found. - + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param SearchType A filter to find only files of this type. Type + EFI_FV_FILETYPE_ALL causes no filtering to be + done. + @param FvHandle Handle of firmware volume in which to + search. + @param FileHandle Points to the current handle from which to + begin searching or NULL to start at the + beginning of the firmware volume. Updated + upon return to reflect the file found. @retval EFI_SUCCESS The file was found. @retval EFI_NOT_FOUND The file was not found. FileHandle contains NULL. -**/ -typedef EFI_STATUS -(EFIAPI *EFI_PEI_FV_FIND_FILE_TYPE)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST EFI_FV_FILETYPE SearchType, - IN CONST EFI_PEI_FV_HANDLE FvHandle, - IN OUT EFI_PEI_FILE_HANDLE *FileHandle + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_FILE_TYPE)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ); /** - Find a file within a volume by its name. - + Find a file within a volume by its name. + This service searches for files with a specific name, within either the specified firmware volume or all firmware volumes. - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI. + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param FileName A pointer to the name of the file to find + within the firmware volume. + @param FvHandle Upon entry, the pointer to the firmware + volume to search or NULL if all firmware + volumes should be searched. Upon exit, the + actual firmware volume in which the file was + found. + @param FileHandle Upon exit, points to the found file's + handle or NULL if it could not be found. + + @retval EFI_SUCCESS File was found. + @retval EFI_NOT_FOUND File was not found. + @retval EFI_INVALID_PARAMETER FvHandle or FileHandle or + FileName was NULL. - @param FileName A pointer to the name of the file to find - within the firmware volume. - @param FvHandle Upon entry, the pointer to the firmware - volume to search or NULL if all firmware - volumes should be searched. Upon exit, the - actual firmware volume in which the file was - found. +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_FILE_NAME)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN CONST EFI_GUID *FileName, + IN EFI_PEI_FV_HANDLE *FvHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle +); - @param FileHandle Upon exit, points to the found file's - handle or NULL if it could not be found. - @retval EFI_SUCCESS File was found. +/** + Returns information about a specific file. - @param EFI_NOT_FOUND File was not found. + This function returns information about a specific + file, including its file name, type, attributes, starting + address and size. - @param EFI_INVALID_PARAMETER FvHandle or FileHandle or - FileName was NULL. + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param FileHandle Handle of the file. + @param FileInfo Upon exit, points to the file's + information. + @retval EFI_SUCCESS File information returned. + @retval EFI_INVALID_PARAMETER If FileHandle does not + represent a valid file. + @retval EFI_INVALID_PARAMETER If FileInfo is NULL. **/ typedef EFI_STATUS -(EFIAPI *EFI_PEI_FV_FIND_FILE_NAME)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST EFI_GUID *FileName, - IN CONST EFI_PEI_FV_HANDLE FvHandle, - OUT EFI_PEI_FILE_HANDLE *FileHandle +(EFIAPI *EFI_PEI_FV_GET_FILE_INFO)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo ); - /** Returns information about a specific file. This function returns information about a specific file, including its file name, type, attributes, starting - address and size. - - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI. + address, size and authentication status. - @param FileHandle Handle of the file. - - @param FileInfo Upon exit, points to the file????s - information. + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param FileHandle Handle of the file. + @param FileInfo Upon exit, points to the file's + information. @retval EFI_SUCCESS File information returned. - @retval EFI_INVALID_PARAMETER If FileHandle does not represent a valid file. - EFI_INVALID_PARAMETER If - FileInfo is NULL - -**/ + @retval EFI_INVALID_PARAMETER If FileInfo is NULL. +**/ typedef -EFI_STATUS (EFIAPI *EFI_PEI_FV_GET_FILE_INFO)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST EFI_PEI_FILE_HANDLE FileHandle, - OUT EFI_FV_FILE_INFO *FileInfo +EFI_STATUS +(EFIAPI *EFI_PEI_FV_GET_FILE_INFO2)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO2 *FileInfo ); /** - This function returns information about the firmware - volume. - - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI. - - @param FvHandle Handle to the firmware handle. - - @param VolumeInfo Points to the returned firmware volume - information. - - - @retval EFI_SUCCESS Information returned - successfully. - - @retval EFI_INVALID_PARAMETER FvHandle does not indicate a - valid firmware volume or VolumeInfo is NULL -**/ + This function returns information about the firmware volume. + + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param FvHandle Handle to the firmware handle. + @param VolumeInfo Points to the returned firmware volume + information. + + @retval EFI_SUCCESS Information returned successfully. + @retval EFI_INVALID_PARAMETER FvHandle does not indicate a valid + firmware volume or VolumeInfo is NULL. + +**/ typedef -EFI_STATUS (EFIAPI *EFI_PEI_FV_GET_INFO)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST EFI_PEI_FV_HANDLE FvHandle, - OUT EFI_FV_INFO *VolumeInfo +EFI_STATUS +(EFIAPI *EFI_PEI_FV_GET_INFO)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_PEI_FV_HANDLE FvHandle, + OUT EFI_FV_INFO *VolumeInfo ); /** Find the next matching section in the firmware file. - - This service enables PEI modules to discover sections of a given type within a valid file. - - @param This Points to this instance of the - EFI_PEI_FIRMWARE_VOLUME_PPI. - - @param SearchType A filter to find only sections of this - type. - - @param FileHandle Handle of firmware file in which to - search. - - @param SectionData Updated upon return to point to the - section found. - + + This service enables PEI modules to discover sections + of a given type within a valid file. + + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param SearchType A filter to find only sections of this + type. + @param FileHandle Handle of firmware file in which to + search. + @param SectionData Updated upon return to point to the + section found. + @retval EFI_SUCCESS Section was found. - @retval EFI_NOT_FOUND Section of the specified type was not found. SectionData contains NULL. **/ typedef EFI_STATUS (EFIAPI *EFI_PEI_FV_FIND_SECTION)( - IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, - IN CONST EFI_SECTION_TYPE SearchType, - IN CONST EFI_PEI_FILE_HANDLE FileHandle, - OUT VOID **SectionData + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_SECTION_TYPE SearchType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData ); +/** + Find the next matching section in the firmware file. + This service enables PEI modules to discover sections + of a given instance and type within a valid file. + + @param This Points to this instance of the + EFI_PEI_FIRMWARE_VOLUME_PPI. + @param SearchType A filter to find only sections of this + type. + @param SearchInstance A filter to find the specific instance + of sections. + @param FileHandle Handle of firmware file in which to + search. + @param SectionData Updated upon return to point to the + section found. + @param AuthenticationStatus Updated upon return to point to the + authentication status for this section. -/* - @par Ppi Description: - This PPI provides functions for accessing a memory-mapped firmware volume of a specific format. + @retval EFI_SUCCESS Section was found. + @retval EFI_NOT_FOUND Section of the specified type was not + found. SectionData contains NULL. +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_SECTION2)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_SECTION_TYPE SearchType, + IN UINTN SearchInstance, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData, + OUT UINT32 *AuthenticationStatus +); - @param ProcessVolume Process a firmware volume and create a volume handle. - @param FindFileByType Find all files of a specific type. - @param FindFileByName Find the file with a specific name. - @param GetFileInfo Return the information about a specific file - @param GetVolumeInfo Return the firmware volume attributes. - @param FindSectionByType Find all sections of a specific type. +#define EFI_PEI_FIRMWARE_VOLUME_PPI_SIGNATURE SIGNATURE_32 ('P', 'F', 'V', 'P') +#define EFI_PEI_FIRMWARE_VOLUME_PPI_REVISION 0x00010030 -**/ +/// +/// This PPI provides functions for accessing a memory-mapped firmware volume of a specific format. +/// struct _EFI_PEI_FIRMWARE_VOLUME_PPI { EFI_PEI_FV_PROCESS_FV ProcessVolume; EFI_PEI_FV_FIND_FILE_TYPE FindFileByType; @@ -243,8 +277,18 @@ struct _EFI_PEI_FIRMWARE_VOLUME_PPI { EFI_PEI_FV_GET_FILE_INFO GetFileInfo; EFI_PEI_FV_GET_INFO GetVolumeInfo; EFI_PEI_FV_FIND_SECTION FindSectionByType; -} ; + EFI_PEI_FV_GET_FILE_INFO2 GetFileInfo2; + EFI_PEI_FV_FIND_SECTION2 FindSectionByType2; + /// + /// Signature is used to keep backward-compatibility, set to {'P','F','V','P'}. + /// + UINT32 Signature; + /// + /// Revision for further extension. + /// + UINT32 Revision; +}; extern EFI_GUID gEfiPeiFirmwareVolumePpiGuid; -#endif +#endif