blob: 207319ec52379296905cf7f970c973cbd4e18f52 [file] [log] [blame]
/** @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