]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/FirmwareVolume2.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / FirmwareVolume2.h
index 5961c8b74126f30eb76b9eaa2524d5b5d955e3dd..07923246094cdf29a2ea2859ee9793ae624b1e77 100644 (file)
@@ -1,18 +1,12 @@
 /** @file\r
-  The Firmware Volume Protocol provides file-level access to the firmware volume. \r
-  Each firmware volume driver must produce an instance of the \r
+  The Firmware Volume Protocol provides file-level access to the firmware volume.\r
+  Each firmware volume driver must produce an instance of the\r
   Firmware Volume Protocol if the firmware volume is to be visible to\r
   the system during the DXE phase. The Firmware Volume Protocol also provides\r
   mechanisms for determining and modifying some attributes of the firmware volume.\r
 \r
-  Copyright (c) 2006 - 2008, 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
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
   @par Revision Reference: PI\r
   Version 1.00.\r
@@ -85,7 +79,8 @@ typedef UINT64  EFI_FV_ATTRIBUTES;
 #define EFI_FV2_ALIGNMENT_2G            0x00000000001F0000ULL\r
 \r
 /**\r
-  \r
+  Returns the attributes and current settings of the firmware volume.\r
+\r
   Because of constraints imposed by the underlying firmware\r
   storage, an instance of the Firmware Volume Protocol may not\r
   be to able to support all possible variations of this\r
@@ -97,7 +92,7 @@ typedef UINT64  EFI_FV_ATTRIBUTES;
   undefined.\r
 \r
   @param  This          Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
-  \r
+\r
   @param  FvAttributes  Pointer to an EFI_FV_ATTRIBUTES in which\r
                         the attributes and current settings are\r
                         returned.\r
@@ -116,6 +111,8 @@ EFI_STATUS
 \r
 \r
 /**\r
+  Modifies the current settings of the firmware volume according to the input parameter.\r
+\r
   The SetVolumeAttributes() function is used to set configurable\r
   firmware volume attributes. Only EFI_FV_READ_STATUS,\r
   EFI_FV_WRITE_STATUS, and EFI_FV_LOCK_STATUS may be modified, and\r
@@ -133,7 +130,7 @@ EFI_STATUS
   TPL_NOTIFY is undefined.\r
 \r
   @param  This          Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
-  \r
+\r
   @param  FvAttributes  On input, FvAttributes is a pointer to\r
                         an EFI_FV_ATTRIBUTES containing the\r
                         desired firmware volume settings. On\r
@@ -142,7 +139,7 @@ EFI_STATUS
                         unsuccessful return, FvAttributes is not\r
                         modified and the firmware volume\r
                         settings are not changed.\r
-  \r
+\r
   @retval EFI_SUCCESS           The requested firmware volume attributes\r
                                 were set and the resulting\r
                                 EFI_FV_ATTRIBUTES is returned in\r
@@ -209,11 +206,13 @@ EFI_STATUS
 \r
 \r
 /**\r
+  Retrieves a file and/or file information from the firmware volume.\r
+\r
   ReadFile() is used to retrieve any file from a firmware volume\r
   during the DXE phase. The actual binary encoding of the file in\r
   the firmware volume media may be in any arbitrary format as long\r
-  as it does the following: ?It is accessed using the Firmware\r
-  Volume Protocol. ?The image that is returned follows the image\r
+  as it does the following: It is accessed using the Firmware\r
+  Volume Protocol. The image that is returned follows the image\r
   format defined in Code Definitions: PI Firmware File Format.\r
   If the input value of Buffer==NULL, it indicates the caller is\r
   requesting only that the type, attributes, and size of the\r
@@ -249,13 +248,13 @@ EFI_STATUS
   undefined.\r
 \r
   @param  This                  Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
-  \r
+\r
   @param  NameGuid              Pointer to an EFI_GUID, which is the file\r
                                 name. All firmware file names are EFI_GUIDs.\r
                                 A single firmware volume must not have two\r
                                 valid files with the same file name\r
                                 EFI_GUID.\r
-  \r
+\r
   @param  Buffer                Pointer to a pointer to a buffer in which the\r
                                 file contents are returned, not including the\r
                                 file header.\r
@@ -263,19 +262,19 @@ EFI_STATUS
   @param  BufferSize            Pointer to a caller-allocated UINTN. It\r
                                 indicates the size of the memory\r
                                 represented by Buffer.\r
-  \r
+\r
   @param  FoundType             Pointer to a caller-allocated EFI_FV_FILETYPE.\r
-  \r
+\r
   @param  FileAttributes        Pointer to a  caller-allocated\r
                                 EFI_FV_FILE_ATTRIBUTES.\r
-  \r
+\r
   @param  AuthenticationStatus  Pointer to a caller-allocated\r
                                 UINT32 in which the\r
                                 authentication status is\r
                                 returned.\r
-  \r
+\r
   @retval EFI_SUCCESS                 The call completed successfully.\r
-  \r
+\r
   @retval EFI_WARN_BUFFER_TOO_SMALL   The buffer is too small to\r
                                       contain the requested\r
                                       output. The buffer is\r
@@ -290,7 +289,7 @@ EFI_STATUS
                                       attempting to access the firmware volume.\r
 \r
   @retval EFI_ACCESS_DENIED           The firmware volume is configured to\r
-                                      isallow reads.\r
+                                      disallow reads.\r
 \r
 **/\r
 typedef\r
@@ -308,12 +307,12 @@ EFI_STATUS
 \r
 \r
 /**\r
+  Locates the requested section within a file and returns it in a buffer.\r
+\r
   ReadSection() is used to retrieve a specific section from a file\r
   within a firmware volume. The section returned is determined\r
   using a depth-first, left-to-right search algorithm through all\r
-  sections found in the specified file. See\r
-   ????Firmware File Sections???? on page 9 for more details about\r
-  sections. The output buffer is specified by a double indirection\r
+  sections found in the specified file. The output buffer is specified by a double indirection\r
   of the Buffer parameter. The input value of Buffer is used to\r
   determine if the output buffer is caller allocated or is\r
   dynamically allocated by ReadSection(). If the input value of\r
@@ -337,56 +336,56 @@ EFI_STATUS
   undefined.\r
 \r
   @param  This                Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
\r
+\r
   @param NameGuid             Pointer to an EFI_GUID, which indicates the\r
                               file name from which the requested section\r
                               will be read.\r
-  \r
+\r
   @param SectionType          Indicates the section type to return.\r
                               SectionType in conjunction with\r
                               SectionInstance indicates which section to\r
                               return.\r
-  \r
+\r
   @param SectionInstance      Indicates which instance of sections\r
                               with a type of SectionType to return.\r
                               SectionType in conjunction with\r
                               SectionInstance indicates which\r
                               section to return. SectionInstance is\r
                               zero based.\r
-  \r
+\r
   @param Buffer               Pointer to a pointer to a buffer in which the\r
                               section contents are returned, not including\r
                               the section header.\r
-  \r
+\r
   @param BufferSize           Pointer to a caller-allocated UINTN. It\r
                               indicates the size of the memory\r
                               represented by Buffer.\r
-  \r
+\r
   @param AuthenticationStatus Pointer to a caller-allocated\r
                               UINT32 in which the authentication\r
                               status is returned.\r
-  \r
-  \r
+\r
+\r
   @retval EFI_SUCCESS   The call completed successfully.\r
-  \r
+\r
   @retval EFI_WARN_BUFFER_TOO_SMALL   The caller-allocated\r
                                       buffer is too small to\r
                                       contain the requested\r
                                       output. The buffer is\r
                                       filled and the output is\r
                                       truncated.\r
-  \r
+\r
   @retval EFI_OUT_OF_RESOURCES  An allocation failure occurred.\r
-  \r
+\r
   @retval EFI_NOT_FOUND   The requested file was not found in\r
                           the firmware volume. EFI_NOT_FOUND The\r
                           requested section was not found in the\r
                           specified file.\r
-  \r
+\r
   @retval EFI_DEVICE_ERROR  A hardware error occurred when\r
                             attempting to access the firmware\r
                             volume.\r
-  \r
+\r
   @retval EFI_ACCESS_DENIED The firmware volume is configured to\r
                             disallow reads. EFI_PROTOCOL_ERROR\r
                             The requested section was not found,\r
@@ -413,9 +412,9 @@ EFI_STATUS
   OUT       UINT32                        *AuthenticationStatus\r
 );\r
 \r
-//\r
-// EFI_FV_WRITE_POLICY\r
-//\r
+///\r
+/// EFI_FV_WRITE_POLICY, two policies (unreliable write and reliable write) are defined.\r
+///\r
 typedef UINT32 EFI_FV_WRITE_POLICY;\r
 #define EFI_FV_UNRELIABLE_WRITE   0x00000000\r
 #define EFI_FV_RELIABLE_WRITE     0x00000001\r
@@ -424,14 +423,31 @@ typedef UINT32 EFI_FV_WRITE_POLICY;
 // EFI_FV_WRITE_FILE_DATA\r
 //\r
 typedef struct {\r
+  ///\r
+  /// Pointer to a GUID, which is the file name to be written.\r
+  ///\r
   EFI_GUID                *NameGuid;\r
+  ///\r
+  /// Indicates the type of file to be written.\r
+  ///\r
   EFI_FV_FILETYPE         Type;\r
+  ///\r
+  /// Indicates the attributes for the file to be written.\r
+  ///\r
   EFI_FV_FILE_ATTRIBUTES  FileAttributes;\r
+  ///\r
+  /// Pointer to a buffer containing the file to be written.\r
+  ///\r
   VOID                    *Buffer;\r
+  ///\r
+  /// Indicates the size of the file image contained in Buffer.\r
+  ///\r
   UINT32                  BufferSize;\r
 } EFI_FV_WRITE_FILE_DATA;\r
 \r
 /**\r
+  Locates the requested section within a file and returns it in a buffer.\r
+\r
   WriteFile() is used to write one or more files to a firmware\r
   volume. Each file to be written is described by an\r
   EFI_FV_WRITE_FILE_DATA structure. The caller must ensure that\r
@@ -450,7 +466,7 @@ typedef struct {
   Architectural Elements 84 August 21, 2006 Version 1.0\r
   WriteFile() is callable only from TPL_NOTIFY and below.\r
   Behavior of WriteFile() at any EFI_TPL above TPL_NOTIFY is\r
-  undefined. \r
+  undefined.\r
 \r
   @param This           Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
 \r
@@ -460,31 +476,31 @@ typedef struct {
                         write in the event of a power failure or\r
                         other system failure during the write\r
                         operation.\r
\r
+\r
   @param FileData       Pointer to an array of\r
                         EFI_FV_WRITE_FILE_DATA. Each element of\r
                         FileData[] represents a file to be written.\r
 \r
 \r
   @retval EFI_SUCCESS             The write completed successfully.\r
-  \r
+\r
   @retval EFI_OUT_OF_RESOURCES    The firmware volume does not\r
                                   have enough free space to\r
                                   storefile(s).\r
-  \r
+\r
   @retval EFI_DEVICE_ERROR        A hardware error occurred when\r
                                   attempting to access the firmware volume.\r
-  \r
+\r
   @retval EFI_WRITE_PROTECTED     The firmware volume is\r
                                   configured to disallow writes.\r
-  \r
+\r
   @retval EFI_NOT_FOUND           A delete was requested, but the\r
                                   requested file was not found in the\r
                                   firmware volume.\r
-  \r
+\r
   @retval EFI_INVALID_PARAMETER   A delete was requested with a\r
                                   multiple file write.\r
-  \r
+\r
   @retval EFI_INVALID_PARAMETER   An unsupported WritePolicy was\r
                                   requested.\r
 \r
@@ -493,10 +509,10 @@ typedef struct {
 \r
   @retval EFI_INVALID_PARAMETER   A file system specific error\r
                                   has occurred.\r
-  \r
+\r
 **/\r
 typedef\r
-EFI_STATUS \r
+EFI_STATUS\r
 (EFIAPI * EFI_FV_WRITE_FILE)(\r
   IN CONST  EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
   IN        UINT32                        NumberOfFiles,\r
@@ -506,6 +522,9 @@ EFI_STATUS
 \r
 \r
 /**\r
+  Retrieves information about the next file in the firmware volume store\r
+  that matches the search criteria.\r
+\r
   GetNextFile() is the interface that is used to search a firmware\r
   volume for a particular file. It is called successively until\r
   the desired file is located or the function returns\r
@@ -522,7 +541,7 @@ EFI_STATUS
   implementation specific and no semantic content is implied.\r
   GetNextFile() is callable only from TPL_NOTIFY and below.\r
   Behavior of GetNextFile() at any EFI_TPL above TPL_NOTIFY is\r
-  undefined. \r
+  undefined.\r
 \r
   @param This       Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.\r
 \r
@@ -575,7 +594,7 @@ EFI_STATUS
   @retval EFI_ACCESS_DENIED The firmware volume is configured to\r
                             disallow reads.\r
 \r
-   \r
+\r
 **/\r
 typedef\r
 EFI_STATUS\r
@@ -589,6 +608,8 @@ EFI_STATUS
 );\r
 \r
 /**\r
+  Return information about a firmware volume.\r
+\r
   The GetInfo() function returns information of type\r
   InformationType for the requested firmware volume. If the volume\r
   does not support the requested information type, then\r
@@ -602,29 +623,29 @@ EFI_STATUS
   @param This             A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL\r
                           instance that is the file handle the requested\r
                           information is for.\r
-  \r
+\r
   @param InformationType  The type identifier for the\r
                           information being requested.\r
-  \r
+\r
   @param BufferSize       On input, the size of Buffer. On output,\r
                           the amount of data returned in Buffer. In\r
                           both cases, the size is measured in bytes.\r
-  \r
+\r
   @param Buffer           A pointer to the data buffer to return. The\r
                           buffer's type is indicated by InformationType.\r
-  \r
-  \r
+\r
+\r
   @retval EFI_SUCCESS           The information was retrieved.\r
-  \r
+\r
   @retval EFI_UNSUPPORTED       The InformationType is not known.\r
-  \r
+\r
   @retval EFI_NO_MEDIA          The device has no medium.\r
-  \r
+\r
   @retval EFI_DEVICE_ERROR      The device reported an error.\r
-  \r
+\r
   @retval EFI_VOLUME_CORRUPTED  The file system structures are\r
                                 corrupted.\r
-  \r
+\r
   @retval EFI_BUFFER_TOO_SMALL  The BufferSize is too small to\r
                                 read the current directory\r
                                 entry. BufferSize has been\r
@@ -644,6 +665,7 @@ EFI_STATUS
 \r
 \r
 /**\r
+  Sets information about a firmware volume.\r
 \r
   The SetInfo() function sets information of type InformationType\r
   on the requested firmware volume.\r
@@ -692,20 +714,19 @@ EFI_STATUS
 );\r
 \r
 \r
-/**\r
-  @par Protocol Description:\r
-  The Firmware Volume Protocol contains the file-level\r
-  abstraction to the firmware volume as well as some firmware\r
-  volume attribute reporting and configuration services. The\r
-  Firmware Volume Protocol is the interface used by all parts of\r
-  DXE that are not directly involved with managing the firmware\r
-  volume itself. This abstraction allows many varied types of\r
-  firmware volume implementations. A firmware volume may be a\r
-  flash device or it may be a file in the UEFI system partition,\r
-  for example. This level of firmware volume implementation\r
-  detail is not visible to the consumers of the Firmware Volume\r
-  Protocol.\r
-**/\r
+///\r
+/// The Firmware Volume Protocol contains the file-level\r
+/// abstraction to the firmware volume as well as some firmware\r
+/// volume attribute reporting and configuration services. The\r
+/// Firmware Volume Protocol is the interface used by all parts of\r
+/// DXE that are not directly involved with managing the firmware\r
+/// volume itself. This abstraction allows many varied types of\r
+/// firmware volume implementations. A firmware volume may be a\r
+/// flash device or it may be a file in the UEFI system partition,\r
+/// for example. This level of firmware volume implementation\r
+/// detail is not visible to the consumers of the Firmware Volume\r
+/// Protocol.\r
+///\r
 struct _EFI_FIRMWARE_VOLUME2_PROTOCOL {\r
   EFI_FV_GET_ATTRIBUTES   GetVolumeAttributes;\r
   EFI_FV_SET_ATTRIBUTES   SetVolumeAttributes;\r
@@ -713,14 +734,14 @@ struct _EFI_FIRMWARE_VOLUME2_PROTOCOL {
   EFI_FV_READ_SECTION     ReadSection;\r
   EFI_FV_WRITE_FILE       WriteFile;\r
   EFI_FV_GET_NEXT_FILE    GetNextFile;\r
-  \r
+\r
   ///\r
   /// Data field that indicates the size in bytes\r
   /// of the Key input buffer for the\r
-  /// GetNextFile() API.  \r
+  /// GetNextFile() API.\r
   ///\r
   UINT32                  KeySize;\r
-  \r
+\r
   ///\r
   /// Handle of the parent firmware volume.\r
   ///\r