4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file declares the Section Extraction PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI is defined in PEI CIS version 0.91. It supports encapsulating sections,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync such as GUIDed sections used to authenticate the file encapsulation of other domain-specific wrapping.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthe terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThe 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 __SECTION_EXTRACTION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __SECTION_EXTRACTION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x4F89E208, 0xE144, 0x4804, {0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_PEI_SECTION_EXTRACTION_PPI EFI_PEI_SECTION_EXTRACTION_PPI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Bit values for AuthenticationStatus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_NOT_TESTED 0x04
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_TEST_FAILED 0x08
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The function is used to retrieve a section from within a section file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It will retrieve both encapsulation sections and leaf sections in their entirety,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exclusive of the section header.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Indicates the calling context
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SectionType The pointer to an EFI_SECTION_TYPE. If
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SectionType == NULL, the contents of the entire
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync section are returned in Buffer. If SectionType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is not NULL, only the requested section is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SectionDefinitionGuid The pointer to an EFI_GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If SectionType == EFI_SECTION_GUID_DEFINED,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SectionDefinitionGuid indicates for which section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GUID to search. If SectionType != EFI_SECTION_GUID_DEFINED,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SectionDefinitionGuid is unused and is ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SectionInstance If SectionType is not NULL, indicates which
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance of the requested section type to return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Buffer The pointer to a pointer to a buffer in which the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync section contents are returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param BufferSize A pointer to a caller-allocated UINT32. On input,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *BufferSize indicates the size in bytes of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memory region pointed to by Buffer. On output,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *BufferSize contains the number of bytes required
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to read the section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AuthenticationStatus A pointer to a caller-allocated UINT32 in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which any metadata from encapsulating GUID-defined
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sections is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The section was successfully processed, and the section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync contents were returned in Buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the file with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bit set, but there was no corresponding GUIDed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Section Extraction Protocol in the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *Buffer is unmodified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The requested section does not exist.*Buffer is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync unmodified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_WARN_TOO_SMALL The size of the input buffer is insufficient to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync contain the requested section. The input buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is filled and contents are section contents are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync truncated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_PEI_GET_SECTION)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SECTION_EXTRACTION_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SECTION_TYPE *SectionType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *SectionDefinitionGuid, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN SectionInstance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID **Buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT32 *BufferSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *AuthenticationStatus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI supports encapsulating sections, such as GUIDed sections used to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync authenticate the file encapsulation of other domain-specific wrapping.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_PEI_SECTION_EXTRACTION_PPI {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_GET_SECTION GetSection; ///< Retrieves a section from within a section file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiPeiSectionExtractionPpiGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync