Newer
Older
AMI-Aptio-BIOS-Reversed / PostScreenInfo / PostScreenInfo.md
@Ajax Dong Ajax Dong 2 days ago 7 KB Init

PostScreenInfo

Function Table

Address Name Description
PostScreenCallback
_ModuleEntryPoint
ProcessLibraryConstructorList
PostScreenDriverEntry
PostScreenHiiInit
PostScreenHiiRegister
ShowPostScreenInfoBlock1
ShowPostScreenInfoBlock2
PostScreenMainEntry
ShowPostScreenData
PostScreenFormUpdate
PostScreenServerSetup
ProcessPostScreenBlocks
PostScreenStringFormatter
PostScreenDataValidation
PostScreenNavigation
PostScreenUiElementUpdate
PostScreenProgressBar
PostScreenLogoDisplay
PostScreenKeyHandler
PostScreenTimeoutHandler
PostScreenTimeDateDisplay
PostScreenCursorUpdate
PostScreenOemStringHandler
PostScreenVarInit
PostScreenSetupData
PostScreenConfigLoad
PostScreenGuidInit
PostScreenFormExit
PostScreenTimerEvent
PostScreenEventNotify
PostScreenTimerStop
PostScreenMemoryAlloc
PostScreenMmioInit
PostScreenStartImage
PostScreenHiiExtract
PostScreenUnload
EfiDriverUnloadHandler
DriverDiagnosticHandler
OemUpdateFruInfo
FruInitInterface
FruHeaderProcessing
FruDataParseAndUpdate
FruDataValidation
FruUpdateProcessor
FruReadAndApplySettings
FruStorageInterface
FruDataCommit
FruRecordParsing
FruStringProcessing
FruFieldExtractor
FruDataLookup
FruStringToValue
FruChecksumCalc
FruCrcValidation
FruWriteToStorage
FruMemoryFree
FruDataCopy
UpdateOCPDeviceInfoToFru
DebugAssertPrint
DebugAssertBreak
Global variable definitions
EFI_HANDLE gImageHandle = NULL;
Global data area (0xCA20 - 0xCB20 in .data section)
EFI_SYSTEM_TABLE *SystemTable = NULL; // qword_CA20
qword_C9B0 //
HII Config Access protocol instance
EFI_HII_CONFIG_ACCESS_PROTOCOL gPostScreenHiiConfigAccess;
Forward declarations
EFI_STATUS EFIAPI
GUID definitions for HII form
EFI_GUID gPostScreenFormSetGuid = { 0x12345678, 0x9ABC, 0xDEF0, { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 } };
Protocol GUID for HII Config Access
EFI_GUID gPostScreenConfigAccessGuid = { 0x87654321, 0xCBAD, 0x0FED, { 0x21, 0x43, 0x65, 0x87, 0xA9, 0xCB, 0xED, 0x0F } };
GUID for MMIO PCI USRA
EFI_GUID gMmPciUsraGuid = { 0xC0B8, 0x11, 0x22, { 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA } };
GUID for HII package list
EFI_GUID gPostScreenHiiPackageGuid = { 0xBF20, 0x11, 0x22, { 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA } };
GUID for DXE services table
EFI_GUID gEfiDxeServicesTableGuid = { 0x5AD34BA, 0xFF0, 0x11, { 0xD2, 0x8F, 0x0, 0xA0, 0xC9, 0x69, 0x72, 0x3B } };
GUID for HII platform setup formset
EFI_GUID gEfiHiiPlatformSetupFormsetGuid = { 0x978, 0x11, 0x22, { 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA } };
Module Entry Point
sub_42C (ProcessLibraryConstructorList) called by C runtime init
sub_3DB8 (PostScreenDriverEntry) is the driver's main function
Library Constructors (Auto-generated by EDK2 build system)
rax __int64 v4; // rbx
rax __int64 result; // rax
Driver Entry
rbx __int64 v3; // rax
rcx __int64 v5; // rdx
r9 __int64 result; // rax
rax char v12; // [rsp+28h] [rbp-D8h]
Install the HII Config Access protocol and HII form
gDriverHandle = gDriverHandle;
HII Initialization and Registration
Creates HII package list with string, form, and image packages
Registers with gHiiDatabase->NewPackageList()
Sets up IFR opcodes for POST screen form display
Handles EFI_BROWSER_ACTION_CHANGING and EFI_BROWSER_ACTION_CHANGED
Routes to PostScreenFormUpdate, PostScreenServerSetup, etc.
Processes OEM-specific QuestionIds for UBA callbacks
Creates HII package list from raw binary data
Registers with NewPackageList
POST Screen Display Functions
Renders system identity info on the POST screen
Server model, BIOS version, BMC firmware version
Renders component info: CPU speed/core count, memory size/type
PCIe device enumeration status
Iterates through POST screen blocks and displays each
Coordinates ShowPostScreenInfoBlock1 and ShowPostScreenInfoBlock2
Handles timeout and keyboard input during display
Iterates Entry array, calls HiiSetString and sends output to GOP
Each entry is a category-value pair rendered as text on screen
Extracts byte at offset 610 to determine display flags
Updates gPostScreenConfig.DisplayFlags accordingly
Uses PrintLib to format and display strings
Handles alignment, truncation, and line wrapping
Updates progress bar and status text on POST screen
Calls PostScreenProgressBar() for visual bar update
Calls HiiSetString() for status message update
Draws progress bar using GOP Block
Fills bar proportional to Percent value
Gets Graphics Output Protocol (GOP)
Locates logo image from HII package
Blits to center of screen
Updates on-screen countdown timer
Gets current time from gRT->GetTime()
Formats and displays on POST screen
Sets cursor position on POST screen console
Processes and displays OEM-specific strings
Handles ASCII/Unicode conversion if needed
POST Screen State Management
Reads POST screen config from NVRAM variables
Initializes gPostScreenConfig with stored values
Falls back to defaults if variable doesn't exist
Signals boot to continue
Periodic timer callback for POST screen updates
Decrements timeout counter
Refreshes screen display
MMIO / Protocol Init
Initializes PCIe MMIO configuration space access
Uses USRA protocol for processor-specific MMIO addressing
Installs protocol interfaces to make the HII form visible
Driver Unload and Diagnostics
Uninstalls protocols, frees memory, closes events
Standard UEFI driver unload stub
FRU (Field Replaceable Unit) Operations
Processes FRU update sequence:
EDK2 Debug Library Helpers

Generated by HR650X BIOS Decompilation Project