Newer
Older
AMI-Aptio-BIOS-Reversed / HardwareSignatureEntry / HardwareSignatureEntry.h
@Ajax Dong Ajax Dong 2 days ago 9 KB Init
/** @file
  HardwareSignatureEntry.h -- Header for HardwareSignatureEntry

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __HARDWARESIGNATUREENTRY_H__
#define __HARDWARESIGNATUREENTRY_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
HiiHardwareSignatureEntry(
  VOID
);

EFI_STATUS
EFIAPI
HiiProcessHardwareSignature(
  VOID
);

EFI_STATUS
EFIAPI
HiiReadHardwareConfigData(
  VOID
);

EFI_STATUS
EFIAPI
RecordHardwareChange(
  VOID
);

EFI_STATUS
EFIAPI
CheckCmosChecksumChanged(
  VOID
);

EFI_STATUS
EFIAPI
HardwareSignatureNotificationCallback(
  VOID
);

EFI_STATUS
EFIAPI
CalculatePhysicalMemorySize(
  VOID
);

EFI_STATUS
EFIAPI
GetHiiStringTable(
  VOID
);

EFI_STATUS
EFIAPI
GetHardwareConfigFromFormset(
  VOID
);

EFI_STATUS
EFIAPI
CompareGuid(
  VOID
);

EFI_STATUS
EFIAPI
DebugAssert(
  VOID
);

EFI_STATUS
EFIAPI
ReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
CalculateCheckSum8(
  VOID
);

EFI_STATUS
EFIAPI
QuickSort(
  VOID
);

EFI_STATUS
EFIAPI
FindHardwareFormset(
  VOID
);

EFI_STATUS
EFIAPI
// ===========================================================================(
  VOID
);

EFI_STATUS
EFIAPI
UEFI globals from library constructors.(
  VOID
);

EFI_STATUS
EFIAPI
EFI_HANDLE             gImageHandle;(
  VOID
);

EFI_STATUS
EFIAPI
gChangeListIndex          = 0;   // 0x1D80(
  VOID
);

EFI_STATUS
EFIAPI
EFI_HII_DATABASE_PROTOCOL     *gHiiDatabase             = NULL;// 0x1DA8(
  VOID
);

EFI_STATUS
EFIAPI
BOOLEAN                       gMemorySizeCached         = FALSE;//0x1DB8(
  VOID
);

EFI_STATUS
EFIAPI
UINT8                         gHardwareStatusByte       = 0;   // 0x1DC4(
  VOID
);

EFI_STATUS
EFIAPI
UINT32                        gHardwareConfigDword      = 0;   // 0x1DCC(
  VOID
);

EFI_STATUS
EFIAPI
UINT32                        gFirmwareCapabilityDword  = 0;   // 0x1DD8(
  VOID
);

EFI_STATUS
EFIAPI
UINT32                        gChangeList[0x14];               // 0x1DE0(
  VOID
);

EFI_STATUS
EFIAPI
UINT32                        gMemorySizeMb             = 0;   // 0x1E3C(
  VOID
);

EFI_STATUS
EFIAPI
computation constants(
  VOID
);

EFI_STATUS
EFIAPI
INT32                   gHardwareSignatureMagic   = 117704678;  // 0x1E30(
  VOID
);

EFI_STATUS
EFIAPI
const UINT8                   gHardwareSignatureYear    = 14;         // 0x1E36 (2014)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_2C0)(
  VOID
);

EFI_STATUS
EFIAPI
memmove: handles forward/backward overlap.(
  VOID
);

EFI_STATUS
EFIAPI
decompiled code shows:(
  VOID
);

EFI_STATUS
EFIAPI
&dest[Length-1] down to dest[0].(
  VOID
);

EFI_STATUS
EFIAPI
>> 3 chunk, then the Length & 7 remainder.(
  VOID
);

EFI_STATUS
EFIAPI
(CHAR8 *)CopyMem (DestinationBuffer, SourceBuffer, Length);(
  VOID
);

EFI_STATUS
EFIAPI
(sub_384)(
  VOID
);

EFI_STATUS
EFIAPI
library constructors initialise ImageHandle, SystemTable(
  VOID
);

EFI_STATUS
EFIAPI
/ UefiRuntimeServicesTableLib).(
  VOID
);

EFI_STATUS
EFIAPI
HiiHardwareSignatureEntry (ImageHandle, NULL);(
  VOID
);

EFI_STATUS
EFIAPI
(sub_430)(
  VOID
);

EFI_STATUS
EFIAPI
the HII Config Access protocol on a child handle and(
  VOID
);

EFI_STATUS
EFIAPI
the notification callback (HardwareSignatureNotificationCallback)(
  VOID
);

EFI_STATUS
EFIAPI
the hardware-configuration formset.(
  VOID
);

EFI_STATUS
EFIAPI
the config-variable store (120 bytes).(
  VOID
);

EFI_STATUS
EFIAPI
Config Access protocol on a new child handle.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->InstallProtocolInterface ((
  VOID
);

EFI_STATUS
EFIAPI
EFI_NATIVE_INTERFACE(
  VOID
);

EFI_STATUS
EFIAPI
);(
  VOID
);

EFI_STATUS
EFIAPI
notify for HII Config Access protocol (unk_1C90)(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->RegisterProtocolNotify ((
  VOID
);

EFI_STATUS
EFIAPI
notify again (unk_1CB0, same notification)(
  VOID
);

EFI_STATUS
EFIAPI
(sub_530)(
  VOID
);

EFI_STATUS
EFIAPI
hardware-signature processing based on "Type" opcode.(
  VOID
);

EFI_STATUS
EFIAPI
current total physical memory (MB).(
  VOID
);

EFI_STATUS
EFIAPI
MemoryMb;(
  VOID
);

EFI_STATUS
EFIAPI
query mode (DataSize == 0 && Data == NULL), store internal.(
  VOID
);

EFI_STATUS
EFIAPI
Data provided and *Data is "close enough" to MemoryMb(
  VOID
);

EFI_STATUS
EFIAPI
|= HW_SIG_FLAG_MEMORY;(
  VOID
);

EFI_STATUS
EFIAPI
StatusByte;(
  VOID
);

EFI_STATUS
EFIAPI
ConfigDword;(
  VOID
);

EFI_STATUS
EFIAPI
CapDword;(
  VOID
);

EFI_STATUS
EFIAPI
(sub_774)(
  VOID
);

EFI_STATUS
EFIAPI
"HardwareConfigData" UEFI variable (default 120 bytes).(
  VOID
);

EFI_STATUS
EFIAPI
(sub_7F0)(
  VOID
);

EFI_STATUS
EFIAPI
a 32-bit change code into the array gChangeList[].(
  VOID
);

EFI_STATUS
EFIAPI
(sub_81C)(
  VOID
);

EFI_STATUS
EFIAPI
CMOS status and checksum to detect battery-backed config(
  VOID
);

EFI_STATUS
EFIAPI
the CMOS info protocol (gCmosInfoProtocolGuid).(
  VOID
);

EFI_STATUS
EFIAPI
it has 128 bytes of data, byte[127] is the status byte.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->LocateProtocol ((
  VOID
);

EFI_STATUS
EFIAPI
NULL(
  VOID
);

EFI_STATUS
EFIAPI
status byte at the last position of the CMOS buffer.(
  VOID
);

EFI_STATUS
EFIAPI
= *(UINT8 *)(*(UINT64 *)((UINT8 *)CmosProtocol + 8) + 127);(
  VOID
);

EFI_STATUS
EFIAPI
the CMOS access protocol (gCmosAccessProtocolGuid).(
  VOID
);

EFI_STATUS
EFIAPI
a checksum from its register-database fields.(
  VOID
);

EFI_STATUS
EFIAPI
offset +24 -> +8 -> +4/+8(
  VOID
);

EFI_STATUS
EFIAPI
result in internal format.(
  VOID
);

EFI_STATUS
EFIAPI
(DataSize == 0)(
  VOID
);

EFI_STATUS
EFIAPI
query: store ChecksumBytes as 2-byte checksum.(
  VOID
);

EFI_STATUS
EFIAPI
(sub_B9C)(
  VOID
);

EFI_STATUS
EFIAPI
callback.  Invoked when the hardware-configuration formset is(
  VOID
);

EFI_STATUS
EFIAPI
all signature components.(
  VOID
);

EFI_STATUS
EFIAPI
(2, 0, NULL);  // memory size(
  VOID
);

EFI_STATUS
EFIAPI
byte(
  VOID
);

EFI_STATUS
EFIAPI
DWORD(
  VOID
);

EFI_STATUS
EFIAPI
checksum(
  VOID
);

EFI_STATUS
EFIAPI
previous update count via RuntimeServices variable.(
  VOID
);

EFI_STATUS
EFIAPI
= &gHardwareSignatureVarGuid;       // unk_1D68(
  VOID
);

EFI_STATUS
EFIAPI
any recorded change codes.(
  VOID
);

EFI_STATUS
EFIAPI
(gChangeListIndex >= 2)(
  VOID
);

EFI_STATUS
EFIAPI
the event (complete the notification).(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->SignalEvent (gHardwareConfigVarStore);(
  VOID
);

EFI_STATUS
EFIAPI
the hardware formset and write the updated count into storage.(
  VOID
);

EFI_STATUS
EFIAPI
= (VOID *)FindHardwareFormset (&gHardwareFormsetGuid);(
  VOID
);

EFI_STATUS
EFIAPI
update count is written at offset +8 inside the formset(
  VOID
);

EFI_STATUS
EFIAPI
block.(
  VOID
);

EFI_STATUS
EFIAPI
completion on the notification event.(
  VOID
);

EFI_STATUS
EFIAPI
(sub_F68)(
  VOID
);

EFI_STATUS
EFIAPI
UEFI memory map and sums physical RAM pages.(
  VOID
);

EFI_STATUS
EFIAPI
required buffer size.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->GetMemoryMap ((
  VOID
);

EFI_STATUS
EFIAPI
MapSize to page boundary.(
  VOID
);

EFI_STATUS
EFIAPI
= ALIGN_VALUE (MapSize + EFI_PAGE_SIZE, EFI_PAGE_SIZE);(
  VOID
);

EFI_STATUS
EFIAPI
descriptors and sum conventional + firmware + ACPI reclaim(
  VOID
);

EFI_STATUS
EFIAPI
= Map;(
  VOID
);

EFI_STATUS
EFIAPI
pages of types 0,2..4,7..8,0xA..0xB (conventional + reserved +(
  VOID
);

EFI_STATUS
EFIAPI
reclaim + ACPI NVS + runtime)(
  VOID
);

EFI_STATUS
EFIAPI
(MapPtr->Type != 1 && MapPtr->Type != 5 &&(
  VOID
);

EFI_STATUS
EFIAPI
page-count bits for a packed size estimate:(
  VOID
);

EFI_STATUS
EFIAPI
+= (PhysicalStart >> 12) & (bits 0-7)(
  VOID
);

EFI_STATUS
EFIAPI
+= (MapPtr->PhysicalStart >> 12) +(
  VOID
);

EFI_STATUS
EFIAPI
result: the sum of page bits plus CachePages.(
  VOID
);

EFI_STATUS
EFIAPI
= TotalPages + CachePages;(
  VOID
);

EFI_STATUS
EFIAPI
(sub_11A8)(
  VOID
);

EFI_STATUS
EFIAPI
HII handles and builds a table of string identifiers(
  VOID
);

EFI_STATUS
EFIAPI
call to get the number of handles.(
  VOID
);

EFI_STATUS
EFIAPI
= NULL;(
  VOID
);

EFI_STATUS
EFIAPI
again.(
  VOID
);

EFI_STATUS
EFIAPI
(UINTN idx = 0; idx < HandleCount; idx++)(
  VOID
);

EFI_STATUS
EFIAPI
the HII string protocol on each handle.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->OpenProtocol ((
  VOID
);

EFI_STATUS
EFIAPI
string attributes (language, etc.)(
  VOID
);

EFI_STATUS
EFIAPI
= StringProtocol->GetString ((
  VOID
);

EFI_STATUS
EFIAPI
ID(
  VOID
);

EFI_STATUS
EFIAPI
table entry: 10 bytes per handle.(
  VOID
);

EFI_STATUS
EFIAPI
EntryBase;(
  VOID
);

EFI_STATUS
EFIAPI
(sub_13D8)(
  VOID
);

EFI_STATUS
EFIAPI
HII formsets matching known GUID patterns, extracts(
  VOID
);

EFI_STATUS
EFIAPI
details in the accompanying .md(
  VOID
);

EFI_STATUS
EFIAPI
DebugAssert via the HII database protocol's DEBUG output.(
  VOID
);

EFI_STATUS
EFIAPI
for brevity(
  VOID
);

EFI_STATUS
EFIAPI
the two's complement of Buffer[0] (checksum).(
  VOID
);

EFI_STATUS
EFIAPI
decompiled logic: return -*Buffer;(
  VOID
);

EFI_STATUS
EFIAPI
is the arithmetic negation (two's complement of the first byte).(
  VOID
);

EFI_STATUS
EFIAPI
(UINT8)(-(INT8)*Buffer);(
  VOID
);

EFI_STATUS
EFIAPI
in-place quicksort (Hoare partition scheme).(
  VOID
);

EFI_STATUS
EFIAPI
Pivot;(
  VOID
);

EFI_STATUS
EFIAPI
of reverse-engineered representation.(
  VOID
);

#endif /* __HARDWARESIGNATUREENTRY_H__ */