/** @file SmmLockBox.h -- Header for SmmLockBox Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __SMMLOCKBOX_H__ #define __SMMLOCKBOX_H__ #include "../uefi_headers/Uefi.h" // // Function Prototypes // EFI_STATUS EFIAPI SmmLockBoxHandler( VOID ); EFI_STATUS EFIAPI LockBoxLock( VOID ); EFI_STATUS EFIAPI LockBoxSave( VOID ); EFI_STATUS EFIAPI LockBoxUpdate( VOID ); EFI_STATUS EFIAPI LockBoxRestore( VOID ); EFI_STATUS EFIAPI LockBoxSetAttributes( VOID ); EFI_STATUS EFIAPI LockBoxRestoreAllInPlace( VOID ); EFI_STATUS EFIAPI ModuleEntryPoint( VOID ); EFI_STATUS EFIAPI ProcessLibraryConstructorList( VOID ); EFI_STATUS EFIAPI RegisterSmmLockBoxHandler( VOID ); EFI_STATUS EFIAPI SmmLockBoxSaveLockBox( VOID ); EFI_STATUS EFIAPI SmmLockBoxUpdateLockBox( VOID ); EFI_STATUS EFIAPI SmmLockBoxRestoreLockBox( VOID ); EFI_STATUS EFIAPI SmmLockBoxSetLockBoxAttributes( VOID ); EFI_STATUS EFIAPI SmmLockBoxRestoreAllLockBoxInPlace( VOID ); EFI_STATUS EFIAPI InternalBaseLibIsListValid( VOID ); EFI_STATUS EFIAPI InsertTailList( VOID ); EFI_STATUS EFIAPI CompareGuid( VOID ); EFI_STATUS EFIAPI ReadUnaligned64( VOID ); EFI_STATUS EFIAPI SmmBufferValidation( VOID ); EFI_STATUS EFIAPI LogMessage( VOID ); EFI_STATUS EFIAPI AssertEfiError( VOID ); EFI_STATUS EFIAPI SmmLockBoxDestructor( VOID ); EFI_STATUS EFIAPI SMM driver provides LockBox save/restore services within SMM.( VOID ); EFI_STATUS EFIAPI registers an SMI handler that processes LockBox commands sent( VOID ); EFI_STATUS EFIAPI the SMM Communication Buffer protocol.( VOID ); EFI_STATUS EFIAPI Range: 0x2C0 - 0x16C0 (26 functions)( VOID ); EFI_STATUS EFIAPI Protocol GUIDs (defined in .rdata at 0x2540-0x2590)( VOID ); EFI_STATUS EFIAPI Variables (defined in .data segment)( VOID ); EFI_STATUS EFIAPI EFI_BOOT_SERVICES *gBootServices; // 0x25C0( VOID ); EFI_STATUS EFIAPI EFI_RUNTIME_SERVICES *gRuntimeServices; // 0x25D0( VOID ); EFI_STATUS EFIAPI UINT64 gSmmDebug2; // 0x25E0 (SMM Debug2 protocol)( VOID ); EFI_STATUS EFIAPI (AMI SMM Buffer Validation)( VOID ); EFI_STATUS EFIAPI (boolean, set by LockBox lock)( VOID ); EFI_STATUS EFIAPI (boolean)( VOID ); EFI_STATUS EFIAPI (module init status)( VOID ); EFI_STATUS EFIAPI //-------------------------------------------------------------------------( VOID ); EFI_STATUS EFIAPI Declarations( VOID ); EFI_STATUS EFIAPI Entry Point( VOID ); EFI_STATUS EFIAPI all library constructors (UEFI Boot/Runtime/SMM services tables)( VOID ); EFI_STATUS EFIAPI (sub_540)( VOID ); EFI_STATUS EFIAPI all library global pointers:( VOID ); EFI_STATUS EFIAPI locates SMM Base2 Protocol and SMM Buffer Validation Protocol.( VOID ); EFI_STATUS EFIAPI SMM Base2 Protocol( VOID ); EFI_STATUS EFIAPI SMM System Table from SMM Base2 Protocol( VOID ); EFI_STATUS EFIAPI AMI SMM Buffer Validation Protocol( VOID ); EFI_STATUS EFIAPI LockBox Communication Configuration Table( VOID ); EFI_STATUS EFIAPI LockBox Context( VOID ); EFI_STATUS EFIAPI the SMM configuration table for the LockBox context.( VOID ); EFI_STATUS EFIAPI NULL if not installed.( VOID ); EFI_STATUS EFIAPI SMI Handler (sub_C7C)( VOID ); EFI_STATUS EFIAPI SmmLockBoxHandler as the SMI handler for the( VOID ); EFI_STATUS EFIAPI SMM Communication protocol, plus a SW dispatch callback( VOID ); EFI_STATUS EFIAPI the main communication handler via SMM Base2( VOID ); EFI_STATUS EFIAPI the lock callback via SW dispatch( VOID ); EFI_STATUS EFIAPI protocol to make the interface available( VOID ); EFI_STATUS EFIAPI (sub_988)( VOID ); EFI_STATUS EFIAPI SMI handler for LockBox commands.( VOID ); EFI_STATUS EFIAPI to sub-handlers based on Command field:( VOID ); EFI_STATUS EFIAPI -> SaveLockBox( VOID ); EFI_STATUS EFIAPI -> UpdateLockBox( VOID ); EFI_STATUS EFIAPI -> RestoreLockBox( VOID ); EFI_STATUS EFIAPI -> SetLockBoxAttributes( VOID ); EFI_STATUS EFIAPI -> RestoreAllLockBoxInPlace( VOID ); EFI_STATUS EFIAPI layout:( VOID ); EFI_STATUS EFIAPI minimum buffer size( VOID ); EFI_STATUS EFIAPI buffer is not in SMRAM or overflow( VOID ); EFI_STATUS EFIAPI return status( VOID ); EFI_STATUS EFIAPI as processed( VOID ); EFI_STATUS EFIAPI (sub_1128)( VOID ); EFI_STATUS EFIAPI a data buffer into SMRAM as a new LockBox entry.( VOID ); EFI_STATUS EFIAPI if already exists( VOID ); EFI_STATUS EFIAPI SMRAM pages for the data( VOID ); EFI_STATUS EFIAPI the entry structure( VOID ); EFI_STATUS EFIAPI data to SMRAM( VOID ); EFI_STATUS EFIAPI entry( VOID ); EFI_STATUS EFIAPI into queue( VOID ); EFI_STATUS EFIAPI (sub_135C)( VOID ); EFI_STATUS EFIAPI a portion of an existing LockBox entry at a given offset.( VOID ); EFI_STATUS EFIAPI (sub_1468)( VOID ); EFI_STATUS EFIAPI data from a LockBox entry back to a caller-provided buffer.( VOID ); EFI_STATUS EFIAPI use the saved SmramBuffer address (restore-in-place)( VOID ); EFI_STATUS EFIAPI required size( VOID ); EFI_STATUS EFIAPI data out of SMRAM( VOID ); EFI_STATUS EFIAPI (sub_8AC)( VOID ); EFI_STATUS EFIAPI the attributes on an existing LockBox entry.( VOID ); EFI_STATUS EFIAPI only currently supported attribute is bit 0:( VOID ); EFI_STATUS EFIAPI (0x1)( VOID ); EFI_STATUS EFIAPI header (0x28 bytes)( VOID ); EFI_STATUS EFIAPI attributes (only bit 0 is valid)( VOID ); EFI_STATUS EFIAPI (from sub_988[command=5])( VOID ); EFI_STATUS EFIAPI the LockBox queue and for each entry with the( VOID ); EFI_STATUS EFIAPI attribute, copies the SMRAM data to the( VOID ); EFI_STATUS EFIAPI buffer address (stored in the entry).( VOID ); EFI_STATUS EFIAPI when restore-in-place was requested( VOID ); EFI_STATUS EFIAPI saved destination( VOID ); EFI_STATUS EFIAPI (sub_10B0)( VOID ); EFI_STATUS EFIAPI the LockBox queue searching for an entry with matching GUID.( VOID ); EFI_STATUS EFIAPI pointer to the entry, or NULL if not found.( VOID ); EFI_STATUS EFIAPI (sub_15C8)( VOID ); EFI_STATUS EFIAPI a linked list has non-null forward/back links.( VOID ); EFI_STATUS EFIAPI (sub_1634)( VOID ); EFI_STATUS EFIAPI doubly-linked list insert at tail.( VOID ); EFI_STATUS EFIAPI (sub_1560)( VOID ); EFI_STATUS EFIAPI two EFI_GUID structures.( VOID ); EFI_STATUS EFIAPI (sub_1688)( VOID ); EFI_STATUS EFIAPI a 64-bit value from a potentially unaligned address.( VOID ); EFI_STATUS EFIAPI Validation (sub_F98)( VOID ); EFI_STATUS EFIAPI that Buffer+Length is NOT in SMRAM and does not overflow.( VOID ); EFI_STATUS EFIAPI the AMI SMM Buffer Validation Protocol if available.( VOID ); EFI_STATUS EFIAPI (sub_C70)( VOID ); EFI_STATUS EFIAPI the gLocked flag, preventing any further SAVE/UPDATE operations.( VOID ); EFI_STATUS EFIAPI is called when a SW dispatch event fires (S3 resume, etc.)( VOID ); EFI_STATUS EFIAPI Messages (sub_DE8 - DEBUG wrapper)( VOID ); EFI_STATUS EFIAPI DEBUG print via SMM Debug2 protocol.( VOID ); EFI_STATUS EFIAPI CMOS 0x4C for debug level filtering.( VOID ); EFI_STATUS EFIAPI CMOS for debug level( VOID ); EFI_STATUS EFIAPI the SMM Debug2 protocol to print( VOID ); EFI_STATUS EFIAPI helper( VOID ); EFI_STATUS EFIAPI an assertion failure when Status is an error.( VOID ); EFI_STATUS EFIAPI (sub_824)( VOID ); EFI_STATUS EFIAPI the LockBox communication configuration table.( VOID ); EFI_STATUS EFIAPI on module exit/destruction.( VOID ); #endif /* __SMMLOCKBOX_H__ */