| /** @file |
| If a GUID-defined section is encountered when doing section extraction, |
| the PEI Foundation or the EFI_PEI_FILE_LOADER_PPI instance |
| calls the appropriate instance of the GUIDed Section Extraction PPI |
| to extract the section stream contained therein. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| This PPI is introduced in PI Version 1.0. |
| |
| **/ |
| |
| #ifndef __EFI_GUIDED_SECTION_EXTRACTION_PPI_H__ |
| #define __EFI_GUIDED_SECTION_EXTRACTION_PPI_H__ |
| |
| // |
| // Typically, protocol interface structures are identified |
| // by associating them with a GUID. Each instance of |
| // a protocol with a given GUID must have |
| // the same interface structure. While all instances of |
| // the GUIDed Section Extraction PPI must have |
| // the same interface structure, they do not all have |
| // te same GUID. The GUID that is associated with |
| // an instance of the GUIDed Section Extraction Protocol |
| // is used to correlate it with the GUIDed section type |
| // that it is intended to process. |
| // |
| |
| typedef struct _EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI; |
| |
| /** |
| Processes the input section and returns the data contained therein |
| along with the authentication status. |
| |
| The ExtractSection() function processes the input section and |
| returns a pointer to the section contents. If the section being |
| extracted does not require processing (if the section |
| GuidedSectionHeader.Attributes has the |
| EFI_GUIDED_SECTION_PROCESSING_REQUIRED field cleared), then |
| OutputBuffer is just updated to point to the start of the |
| section's contents. Otherwise, *Buffer must be allocated |
| from PEI permanent memory. |
| |
| @param This Indicates the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI |
| instance. |
| @param InputSection Buffer containing the input GUIDed section to be |
| processed. |
| @param OutputBuffer *OutputBuffer is allocated from PEI permanent memory |
| and contains the new section stream. |
| @param OutputSize A pointer to a caller-allocated UINTN in which |
| the size of *OutputBuffer allocation is stored. |
| If the function returns anything other than |
| EFI_SUCCESS, the value of *OutputSize is undefined. |
| @param AuthenticationStatus A pointer to a caller-allocated UINT32 that indicates |
| the authentication status of the output buffer. |
| If the input section's |
| GuidedSectionHeader.Attributes field has the |
| EFI_GUIDED_SECTION_AUTH_STATUS_VALID bit as clear, |
| *AuthenticationStatus must return zero. These bits |
| reflect the status of the extraction operation. |
| If the function returns anything other than EFI_SUCCESS, |
| the value of *AuthenticationStatus is undefined. |
| |
| @retval EFI_SUCCESS The InputSection was successfully processed and the |
| section contents were returned. |
| @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process the request. |
| @retval EFI_INVALID_PARAMETER The GUID in InputSection does not match this instance of the |
| GUIDed Section Extraction PPI. |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_PEI_EXTRACT_GUIDED_SECTION)( |
| IN CONST EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This, |
| IN CONST VOID *InputSection, |
| OUT VOID **OutputBuffer, |
| OUT UINTN *OutputSize, |
| OUT UINT32 *AuthenticationStatus |
| ); |
| |
| /// |
| /// If a GUID-defined section is encountered when doing section extraction, |
| /// the PEI Foundation or the EFI_PEI_FILE_LOADER_PPI instance |
| /// calls the appropriate instance of the GUIDed Section |
| /// Extraction PPI to extract the section stream contained |
| /// therein. |
| /// |
| struct _EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI { |
| EFI_PEI_EXTRACT_GUIDED_SECTION ExtractSection; |
| }; |
| |
| #endif |