-/** @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