/** @file\r
- This file declares Section Extraction protocols.\r
+ This file declares Section Extraction Protocol.\r
\r
This interface provides a means of decoding a set of sections into a linked list of\r
leaf sections. This provides for an extensible and flexible file format.\r
\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
+ Copyright (c) 2006 - 2009, Intel Corporation\r
All rights reserved. This program and the accompanying\r
materials are licensed and made available under the terms and\r
conditions of the BSD License which accompanies this\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: SectionExtraction.h\r
-\r
@par Revision Reference:\r
This protocol is defined in Firmware Volume Specification.\r
Version 0.9\r
#ifndef _SECTION_EXTRACTION_PROTOCOL_H_\r
#define _SECTION_EXTRACTION_PROTOCOL_H_\r
\r
-#include <PiDxe.h>\r
-\r
//\r
// Protocol GUID definition\r
//\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_OPEN_SECTION_STREAM) (\r
+(EFIAPI *EFI_OPEN_SECTION_STREAM)(\r
IN EFI_SECTION_EXTRACTION_PROTOCOL *This,\r
IN UINTN SectionStreamLength,\r
IN VOID *SectionStream,\r
\r
@param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance.\r
@param SectionStreamHandle Indicates from which section stream to read.\r
- @param SectionType Pointer to an EFI_SECTION_TYPE.\r
- @param SectionDefinitionGuid Pointer to an EFI_GUID.If SectionType ==\r
+ @param SectionType Pointer to an EFI_SECTION_TYPE. If SectionType == NULL, the contents of the \r
+ entire section stream are returned in Buffer. If SectionType is not NULL, \r
+ only the requested section is returned. EFI_SECTION_ALL matches all section \r
+ types and can be used as a wild card to extract all sections in order.\r
+ @param SectionDefinitionGuid Pointer to an EFI_GUID. If SectionType ==\r
EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid indicates what section GUID\r
- to search for.If SectionType !=EFI_SECTION_GUID_DEFINED, then\r
+ to search for. If SectionType !=EFI_SECTION_GUID_DEFINED, then\r
SectionDefinitionGuid is unused and is ignored.\r
@param SectionInstance Indicates which instance of the requested section\r
type to return when SectionType is not NULL.\r
@retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process\r
the request.\r
@retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.\r
- @retval EFI_BUFFER_TOO_SMALL The size of the input buffer is insufficient to\r
- contain the requested section.\r
+ @retval EFI_WARN_BUFFER_TOO_SMALL The size of the input buffer is insufficient to contain the requested\r
+ section. The input buffer is filled and section contents are truncated.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_GET_SECTION) (\r
+(EFIAPI *EFI_GET_SECTION)(\r
IN EFI_SECTION_EXTRACTION_PROTOCOL *This,\r
IN UINTN SectionStreamHandle,\r
IN EFI_SECTION_TYPE *SectionType,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_CLOSE_SECTION_STREAM) (\r
+(EFIAPI *EFI_CLOSE_SECTION_STREAM)(\r
IN EFI_SECTION_EXTRACTION_PROTOCOL *This,\r
IN UINTN SectionStreamHandle\r
);\r
//\r
// Protocol definition\r
//\r
-/**\r
- @par Protocol Description:\r
- The Section Extraction Protocol provides a simple method of extracting\r
- sections from arbitrarily complex files.\r
-\r
- @param OpenSectionStream\r
- Takes a bounded stream of sections and returns a section stream handle.\r
-\r
- @param GetSection\r
- Given a section stream handle, retrieves the requested section and\r
- meta-data from the section stream.\r
-\r
- @param CloseSectionStream\r
- Given a section stream handle, closes the section stream.\r
-\r
-**/\r
struct _EFI_SECTION_EXTRACTION_PROTOCOL {\r
+ ///\r
+ /// Takes a bounded stream of sections and returns a section stream handle.\r
+ ///\r
EFI_OPEN_SECTION_STREAM OpenSectionStream;\r
+\r
+ ///\r
+ /// Given a section stream handle, retrieves the requested section and\r
+ /// meta-data from the section stream.\r
+ ///\r
EFI_GET_SECTION GetSection;\r
+\r
+ ///\r
+ /// Given a section stream handle, closes the section stream.\r
+ ///\r
EFI_CLOSE_SECTION_STREAM CloseSectionStream;\r
};\r
\r