--- /dev/null
+/** @file\r
+ This file declares GUIDed section extraction protocol.\r
+\r
+ This interface provides a means of decoding a GUID defined encapsulation \r
+ section. There may be multiple different GUIDs associated with the GUIDed\r
+ section extraction protocol. That is, all instances of the GUIDed section\r
+ extraction protocol must have the same interface structure.\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Module Name: GuidedSectionExtraction.h\r
+\r
+ @par Revision Reference:\r
+ This protocol is defined in Firmware Volume Specification.\r
+ Version 0.9\r
+\r
+**/\r
+\r
+#ifndef __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
+#define __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
+\r
+\r
+//\r
+// Protocol GUID definition. Each GUIDed section extraction protocol has the\r
+// same interface but with different GUID. All the GUIDs is defined here.\r
+// May add multiple GUIDs here.\r
+//\r
+#define EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID \\r
+ { \\r
+ 0xFC1BCDB0, 0x7D31, 0x49aa, {0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } \\r
+ }\r
+\r
+//\r
+// Forward reference for pure ANSI compatability\r
+//\r
+typedef struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL;\r
+\r
+//\r
+// Protocol member functions\r
+//\r
+/**\r
+ Processes the input section and returns the data contained therein along \r
+ with the authentication status.\r
+\r
+ @param This Indicates the EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL instance.\r
+ @param InputSection Buffer containing the input GUIDed section to be processed.\r
+ @param OutputBuffer *OutputBuffer is allocated from boot services pool memory\r
+ and contains the new section stream.\r
+ @param OutputSize A pointer to a caller-allocated UINTN in which the size\r
+ of *OutputBuffer allocation is stored.\r
+ @param AuthenticationStatus A pointer to a caller-allocated UINT32 that\r
+ indicates the authentication status of the output buffer.\r
+ \r
+ @retval EFI_SUCCESS The InputSection was successfully processed and the\r
+ section contents were returned.\r
+ @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to\r
+ process the request.\r
+ @retval EFI_INVALID_PARAMETER The GUID in InputSection does not match\r
+ this instance of the GUIDed Section Extraction Protocol.\r
+\r
+**/\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_EXTRACT_GUIDED_SECTION) (\r
+ IN EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *This,\r
+ IN VOID *InputSection,\r
+ OUT VOID **OutputBuffer,\r
+ OUT UINTN *OutputSize,\r
+ OUT UINT32 *AuthenticationStatus\r
+ );\r
+\r
+//\r
+// Protocol definition\r
+//\r
+/**\r
+ @par Protocol Description:\r
+ If a GUID-defined section is encountered when doing section extraction, \r
+ the section extraction driver calls the appropriate instance of the GUIDed \r
+ Section Extraction Protocol to extract the section stream contained therein.\r
+\r
+ @param ExtractSection\r
+ Takes the GUIDed section as input and produces the section stream data. \r
+\r
+**/\r
+struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL {\r
+ EFI_EXTRACT_GUIDED_SECTION ExtractSection;\r
+};\r
+\r
+//\r
+// may add other GUID here\r
+//\r
+extern EFI_GUID gEfiCrc32GuidedSectionExtractionProtocolGuid;\r
+\r
+#endif\r