]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Ppi/SectionExtraction.h
afa473d9ef5e7d80231b82d7a4c0cf0bfdf90d89
[mirror_edk2.git] / MdePkg / Include / Ppi / SectionExtraction.h
1 /** @file
2 This file declares Section Extraction PPI.
3
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 Module Name: SectionExtraction.h
14
15 @par Revision Reference:
16 This PPI is defined in PEI CIS.
17 Version 0.91.
18
19 **/
20
21 #ifndef __SECTION_EXTRACTION_PPI_H__
22 #define __SECTION_EXTRACTION_PPI_H__
23
24 #define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \
25 { \
26 0x4F89E208, 0xE144, 0x4804, {0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 } \
27 }
28
29 typedef struct _EFI_PEI_SECTION_EXTRACTION_PPI EFI_PEI_SECTION_EXTRACTION_PPI;
30
31 //
32 // Bit values for AuthenticationStatus
33 //
34 #define EFI_PEI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01
35 #define EFI_PEI_AUTH_STATUS_IMAGE_SIGNED 0x02
36 #define EFI_PEI_AUTH_STATUS_NOT_TESTED 0x04
37 #define EFI_PEI_AUTH_STATUS_TEST_FAILED 0x08
38
39 /**
40 The function is used to retrieve a section from within a section file.
41 It will retrieve both encapsulation sections and leaf sections in their entirety,
42 exclusive of the section header.
43
44 @param PeiServices Pointer to the PEI Services Table.
45
46 @param This Indicates the calling context
47
48 @param SectionType Pointer to an EFI_SECTION_TYPE. If SectionType == NULL,
49 the contents of the entire section are returned in Buffer. If SectionType
50 is not NULL, only the requested section is returned.
51
52 @param SectionDefinitionGuid Pointer to an EFI_GUID.
53 If SectionType == EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid
54 indicates for which section GUID to search.
55 If SectionType != EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid
56 is unused and is ignored.
57
58 @param SectionInstance If SectionType is not NULL, indicates which
59 instance of the requested section type to return.
60
61 @param Buffer Pointer to a pointer to a buffer in which the section
62 contents are returned.
63
64 @param BufferSize A pointer to a caller-allocated UINT32.On input, *BufferSize
65 indicates the size in bytes of the memory region pointed to by Buffer.On output,
66 *BufferSize contains the number of bytes required to read the section.
67
68 @param AuthenticationStatus A pointer to a caller-allocated UINT32 in
69 which any metadata from encapsulating GUID-defined sections is returned.
70
71 @retval EFI_SUCCESS The section was successfully processed and the section
72 contents were returned in Buffer.
73
74 @retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered in
75 the file with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, but
76 there was no corresponding GUIDed Section Extraction Protocol in the
77 handle database.*Buffer is unmodified.
78
79 @retval EFI_NOT_FOUND The requested section does not exist.*Buffer is unmodified.
80
81 @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process the request.
82
83 @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.
84
85 @retval EFI_WARN_TOO_SMALL The size of the input buffer is insufficient to
86 contain the requested section. The input buffer is filled and contents are
87 section contents are truncated.
88
89 **/
90 typedef
91 EFI_STATUS
92 (EFIAPI *EFI_PEI_GET_SECTION) (
93 IN EFI_PEI_SERVICES **PeiServices,
94 IN EFI_PEI_SECTION_EXTRACTION_PPI *This,
95 IN EFI_SECTION_TYPE *SectionType,
96 IN EFI_GUID *SectionDefinitionGuid, OPTIONAL
97 IN UINTN SectionInstance,
98 IN VOID **Buffer,
99 IN OUT UINT32 *BufferSize,
100 OUT UINT32 *AuthenticationStatus
101 );
102
103 /**
104 @par Ppi Description:
105 This PPI supports encapsulating sections, such as GUIDed sections used to
106 authenticate the file encapsulation of other domain-specific wrapping.
107
108 @param GetSection
109 Retrieves a section from within a section file.
110
111 **/
112 struct _EFI_PEI_SECTION_EXTRACTION_PPI {
113 EFI_PEI_GET_SECTION PeiGetSection;
114 };
115
116 extern EFI_GUID gEfiPeiSectionExtractionPpiGuid;
117
118 #endif