BootScriptSave.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard/** @file
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard This protocol is used to store or record various boot scripts into boot
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard script tables.
940d71d237794874e18a0eb72f6564821a823517eschrock
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardCopyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardThis program and the accompanying materials are licensed and made available under
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardthe terms and conditions of the BSD License that accompanies this distribution.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardThe full text of the license may be found at
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardhttp://opensource.org/licenses/bsd-license.php.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @par Revision Reference:
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard This protocol defined in the Boot Script Specification, Version 0.91.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard**/
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard#ifndef _BOOT_SCRIPT_SAVE_PROTOCOL_H_
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard#define _BOOT_SCRIPT_SAVE_PROTOCOL_H_
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard///
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard/// S3 Save Protocol GUID.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard///
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard#define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard { \
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard 0x470e1529, 0xb79e, 0x4e32, {0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 } \
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard }
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardtypedef struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL EFI_BOOT_SCRIPT_SAVE_PROTOCOL;
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard/**
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard Adds a record into a specified Framework boot script table.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @param This A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @param TableName The name of the script table. Currently, the only meaningful
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard value is EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @param OpCode The operation code (opcode) number.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @param ... The argument list that is specific to each opcode.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @retval EFI_SUCCESS The operation succeeded. A record was added into the specified script table.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @retval EFI_INVALID_PARAMETER The parameter is illegal, or the given boot script is not supported.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard @retval EFI_OUT_OF_RESOURCES There is insufficient memory to store the boot script.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard**/
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardtypedef
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willardEFI_STATUS
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard(EFIAPI *EFI_BOOT_SCRIPT_WRITE)(
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This,
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard IN UINT16 TableName,
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard IN UINT16 OpCode,
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard ...
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard );
940d71d237794874e18a0eb72f6564821a823517eschrock
940d71d237794874e18a0eb72f6564821a823517eschrock/**
940d71d237794874e18a0eb72f6564821a823517eschrock Closes the specified script table.
ecb56eb0ffe7dd69b90f2aa3f3be470eca3ecc28willard
@param This A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
@param TableName The name of the script table.
@param Address A pointer to the physical address where the table begins.
@retval EFI_SUCCESS The table was successfully returned.
@retval EFI_NOT_FOUND The specified table was not created previously.
@retval EFI_OUT_OF_RESOURCES Memory is insufficient to hold the reorganized boot script table.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE)(
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This,
IN UINT16 TableName,
OUT EFI_PHYSICAL_ADDRESS *Address
);
///
/// The EFI_BOOT_SCRIPT_SAVE_PROTOCOL publishes the Framework boot script abstractions
/// to store or record various boot scripts into boot script tables.
///
struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL {
EFI_BOOT_SCRIPT_WRITE Write; ///< Writes various boot scripts to a boot script table.
EFI_BOOT_SCRIPT_CLOSE_TABLE CloseTable; ///< Retrieves and closes a script table.
};
extern EFI_GUID gEfiBootScriptSaveProtocolGuid;
#endif