# 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*