/** @file LegacySmmSredir.h -- Header for LegacySmmSredir Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __LEGACYSMMSREDIR_H__ #define __LEGACYSMMSREDIR_H__ #include "../uefi_headers/Uefi.h" // // Global state recovered from module data recovery notes // extern EFI_SYSTEM_TABLE *gST; // 0x1A08 extern EFI_BOOT_SERVICES *gBS; // 0x1A10 extern EFI_HANDLE gImageHandle; // 0x1A18 extern EFI_RUNTIME_SERVICES *gRT; // 0x1A20 extern VOID *gSmst; // 0x1A28 extern VOID *gSmmDebugLib; // 0x1A30 extern EFI_BOOT_SERVICES *gBSLocal; // 0x1A38 extern VOID *gSmmInternalProtocol;// 0x1A40 extern VOID *gSmmBase2Protocol; // 0x1A48 extern UINT8 gSmmMode; // 0x1A50 extern VOID *gSmmIoProtocol; // 0x1A58 extern UINT8 gSmmIoPhase; // 0x1A60 extern VOID *gSmmDebugLibAlt; // 0x1A68 extern VOID *gDxeIoProtocol; // 0x1A70 extern EFI_RUNTIME_SERVICES *gRTLocal; // 0x1A78 extern VOID *gDxeDebugLib; // 0x1A80 extern EFI_SYSTEM_TABLE *gSTLocal; // 0x1A88 extern VOID *gAmiBufferValidation;// 0x1A90 extern UINT8 gCmosValue; // 0x1A98 extern UINTN gDriverStatus; // 0x1B98 extern VOID *gSmmCommunication; // 0x1BA0 extern VOID *gSmmCommunicationProtocol; // 0x19F0 extern UINT8 gDataWidth; // 0x19F8 extern UINT8 gCommunicateDisabled; // 0x19F9 extern VOID *gSmmCommunicateBuffer; // 0x1A00 // // Function Prototypes // /// /// _ModuleEntryPoint -- UEFI SMM entry point recovered name /// EFI_STATUS EFIAPI _ModuleEntryPoint( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); /// /// ModuleEntryPoint -- legacy compatibility alias /// EFI_STATUS EFIAPI ModuleEntryPoint( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); /// /// _ModuleEntryPoint sub-helpers /// EFI_STATUS EFIAPI LegacySmmSredirAutoGenInit( VOID ); /// /// sub_618 /// EFI_STATUS EFIAPI LegacySmmSredirDriverEntry( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); /// /// Additional recovered internal entry helpers /// EFI_STATUS EFIAPI LegacySmmSredirRegisterCommunicationServices( VOID ); EFI_STATUS EFIAPI LegacySmmSredirMainDispatch( VOID ); EFI_STATUS EFIAPI LegacySmmSredirHandleCommunicate( IN VOID *Context, IN VOID *CommBuffer, IN UINTN *CommBufferSize, OUT VOID *CommBufferData ); VOID EFIAPI LegacySmmSredirDisableCommunicateHandler( IN EFI_HANDLE Protocol, IN VOID *Context, IN VOID *Registration ); EFI_STATUS EFIAPI LegacySmmSredirRegisterProtocolNotification( VOID ); VOID EFIAPI LegacySmmSredirNotificationCallback( IN EFI_HANDLE Protocol, IN VOID *Context, IN VOID *Communication ); EFI_STATUS EFIAPI LegacySmmSredirSaveJumpContext( IN VOID *JumpBuffer ); VOID LegacySmmSredirRestoreJumpContext( IN VOID *JumpBuffer ); VOID LegacySmmSredirValidateJumpContext( IN VOID *JumpBuffer ); EFI_STATUS EFIAPI LegacySmmSredirLocateDebugLib( VOID ); VOID LegacySmmSredirDebugPrint( IN UINTN ErrorLevel, IN CHAR8 *Format, ... ); VOID LegacySmmSredirDebugAssert( IN CHAR16 *FileName, IN INTN LineNumber, IN CHAR8 *Description, IN CHAR8 *Assertion, IN BOOLEAN AssertType ); VOID * LegacySmmSredirGetIoProtocol( VOID ); VOID * LegacySmmSredirGetDebugProtocol( VOID ); EFI_STATUS EFIAPI LegacySmmSredirFindRuntimeServices( VOID ); BOOLEAN LegacySmmSredirComparePattern( IN VOID *Left, IN VOID *Right, IN UINTN Size ); EFI_STATUS LegacySmmSredirValidateBuffer( IN VOID *Address, IN UINTN Length, IN BOOLEAN ForWrite ); EFI_STATUS LegacySmmSredirDetectPlatform( VOID ); EFI_STATUS EFIAPI sub_44C( VOID ); EFI_STATUS EFIAPI sub_618( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); #endif /* __LEGACYSMMSREDIR_H__ */