From ba2377328775b10caa4c2091a8997eb8685c39b8 Mon Sep 17 00:00:00 2001 From: AJFISH Date: Tue, 3 Jul 2007 18:34:24 +0000 Subject: Removed IntelframeworkPkg contamination from MdeModulePkg modules. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3019 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/Protocol/SectionExtraction.h | 142 ++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 MdePkg/Include/Protocol/SectionExtraction.h (limited to 'MdePkg/Include/Protocol/SectionExtraction.h') diff --git a/MdePkg/Include/Protocol/SectionExtraction.h b/MdePkg/Include/Protocol/SectionExtraction.h new file mode 100644 index 0000000000..2210887d35 --- /dev/null +++ b/MdePkg/Include/Protocol/SectionExtraction.h @@ -0,0 +1,142 @@ +/** @file + This file declares Section Extraction protocol. + + The section extraction protocol is referenced in the PI 1.0 specification, but + not defined. It will likely be added in an eratta update. + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __SECTION_EXTRACTION_PROTOCOL_H__ +#define __SECTION_EXTRACTION_PROTOCOL_H__ + + + +typedef struct _EFI_SECTION_EXTRACTION_PROTOCOL EFI_SECTION_EXTRACTION_PROTOCOL; + +// +// Protocol member functions +// +/** + Creates and returns a new section stream handle to represent the new section stream. + + @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. + @param SectionStreamLength Size in bytes of the section stream. + @param SectionStream Buffer containing the new section stream. + @param SectionStreamHandle A pointer to a caller-allocated UINTN that, + on output, contains the new section stream handle. + + @retval EFI_SUCCESS The SectionStream was successfully processed and + the section stream handle was returned. + @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to + process the request. + @retval EFI_INVALID_PARAMETER The section stream may be corrupt or the value + of SectionStreamLength may be incorrect. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_OPEN_SECTION_STREAM) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL *This, + IN UINTN SectionStreamLength, + IN VOID *SectionStream, + OUT UINTN *SectionStreamHandle + ); + +/** + Reads and returns a single section from a section stream. + + @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. + @param SectionStreamHandle Indicates from which section stream to read. + @param SectionType Pointer to an EFI_SECTION_TYPE. + @param SectionDefinitionGuid Pointer to an EFI_GUID.If SectionType == + EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid indicates what section GUID + to search for.If SectionType !=EFI_SECTION_GUID_DEFINED, then + SectionDefinitionGuid is unused and is ignored. + @param SectionInstance Indicates which instance of the requested section + type to return when SectionType is not NULL. + @param SectionStreamHandle A pointer to a caller-allocated UINTN that, on output, + contains the new section stream handle. + @param Buffer Pointer to a pointer to a buffer in which the section + contents are returned. + @param BufferSize Pointer to a caller-allocated UINTN. + @param AuthenticationStatus Pointer to a caller-allocated UINT32 in + which any meta-data from encapsulation GUID-defined sections is returned. + + @retval EFI_SUCCESS The SectionStream was successfully processed and + the section contents were returned in Buffer. + @retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered in + the section stream with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, + but there was no corresponding GUIDed Section Extraction Protocol in + the handle database. + @retval EFI_NOT_FOUND An error was encountered when parsing the SectionStream, + which indicates that the SectionStream is not correctly formatted. + Or The requested section does not exist. + @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process + the request. + @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. + @retval EFI_BUFFER_TOO_SMALL The size of the input buffer is insufficient to + contain the requested section. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_SECTION) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL *This, + IN UINTN SectionStreamHandle, + IN EFI_SECTION_TYPE *SectionType, + IN EFI_GUID *SectionDefinitionGuid, + IN UINTN SectionInstance, + IN VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + +/** + Deletes a section stream handle and returns all associated resources to the system. + + @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. + @param SectionStreamHandle Indicates the section stream to close. + @retval EFI_SUCCESS The SectionStream was successfully processed and + the section stream handle was returned. + @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_CLOSE_SECTION_STREAM) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL *This, + IN UINTN SectionStreamHandle + ); + +/** + @par Protocol Description: + The Section Extraction Protocol provides a simple method of extracting + sections from arbitrarily complex files. + + @param OpenSectionStream + Takes a bounded stream of sections and returns a section stream handle. + + @param GetSection + Given a section stream handle, retrieves the requested section and + meta-data from the section stream. + + @param CloseSectionStream + Given a section stream handle, closes the section stream. + +**/ +struct _EFI_SECTION_EXTRACTION_PROTOCOL { + EFI_OPEN_SECTION_STREAM OpenSectionStream; + EFI_GET_SECTION GetSection; + EFI_CLOSE_SECTION_STREAM CloseSectionStream; +}; + +#endif -- cgit v1.2.3