/** @file InventoryApp.h -- Header for InventoryApp Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __INVENTORYAPP_H__ #define __INVENTORYAPP_H__ #include "../uefi_headers/Uefi.h" // // Function Prototypes // EFI_STATUS EFIAPI _ModuleEntryPoint( VOID ); EFI_STATUS EFIAPI AsciiStrHexToUint64( VOID ); EFI_STATUS EFIAPI StrLen( VOID ); EFI_STATUS EFIAPI StrSize( VOID ); EFI_STATUS EFIAPI SPrintf( VOID ); EFI_STATUS EFIAPI DebugAssert( VOID ); EFI_STATUS EFIAPI DebugPrint( VOID ); EFI_STATUS EFIAPI HexCharToUint( VOID ); EFI_STATUS EFIAPI size: 0x51a0 bytes( VOID ); EFI_STATUS EFIAPI module is a UEFI Shell-based System Inventory Diagnostic Tool.( VOID ); EFI_STATUS EFIAPI locates the gSystemInventoryProtocol (or gBmcSystemInventoryProtocol)( VOID ); EFI_STATUS EFIAPI dumps inventory data for CPU, DIMM, PCIe, and HDD subsystems.( VOID ); EFI_STATUS EFIAPI paths: e:\hs\MdePkg\Library\...( VOID ); EFI_STATUS EFIAPI variables( VOID ); EFI_STATUS EFIAPI EFI_SYSTEM_TABLE *gST; // 0x4EE8( VOID ); EFI_STATUS EFIAPI EFI_RUNTIME_SERVICES *gRT; // 0x4F00( VOID ); EFI_STATUS EFIAPI (secondary copy)( VOID ); EFI_STATUS EFIAPI (argument count)( VOID ); EFI_STATUS EFIAPI (argument vector pointer)( VOID ); EFI_STATUS EFIAPI (HOB list pointer)( VOID ); EFI_STATUS EFIAPI (debug output flag)( VOID ); EFI_STATUS EFIAPI (output buffer)( VOID ); EFI_STATUS EFIAPI Inventory Protocol GUIDs( VOID ); EFI_STATUS EFIAPI = gSystemInventoryProtocolGuid( VOID ); EFI_STATUS EFIAPI = gSystemInventoryProtocol (protocol instance)( VOID ); EFI_STATUS EFIAPI = gSystemInventoryProtocol + 0 (HOB GUID data)( VOID ); EFI_STATUS EFIAPI = gSystemInventoryProtocol + 8( VOID ); EFI_STATUS EFIAPI Layout (size = 3402 = 0xD4A bytes)( VOID ); EFI_STATUS EFIAPI Size Field( VOID ); EFI_STATUS EFIAPI 85 BiosAndMEVersionInfo (BIOS/ME version info)( VOID ); EFI_STATUS EFIAPI 1 BmcDeviceInfoParamaterSelector( VOID ); EFI_STATUS EFIAPI 1 CpuCount( VOID ); EFI_STATUS EFIAPI 170 CpuInfo[] (85 bytes per CPU, max 2 CPUs)( VOID ); EFI_STATUS EFIAPI 1 DimmCount( VOID ); EFI_STATUS EFIAPI 2016 DimmInfo[] (84 bytes per DIMM, max 24 DIMMs)( VOID ); EFI_STATUS EFIAPI 1 PciCount( VOID ); EFI_STATUS EFIAPI 76 PciInfo[] (19 bytes per slot, max 4 slots)( VOID ); EFI_STATUS EFIAPI 1 HddCount( VOID ); EFI_STATUS EFIAPI 1050 HddInfo[] (75 bytes per HDD, max 14 HDDs)( VOID ); EFI_STATUS EFIAPI (85 bytes)( VOID ); EFI_STATUS EFIAPI 1 CoreCount( VOID ); EFI_STATUS EFIAPI 1 ThreadCount( VOID ); EFI_STATUS EFIAPI 13 CpuVendor (string)( VOID ); EFI_STATUS EFIAPI 30 CpuFamilyName (string)( VOID ); EFI_STATUS EFIAPI 30 CpuModelIdName (string)( VOID ); EFI_STATUS EFIAPI 10 Stepping (string)( VOID ); EFI_STATUS EFIAPI MaxFrequency (UINT32, value in MHz)( VOID ); EFI_STATUS EFIAPI (84 bytes)( VOID ); EFI_STATUS EFIAPI 1 DimmSlotIndex( VOID ); EFI_STATUS EFIAPI 1 NodeNumber( VOID ); EFI_STATUS EFIAPI 1 ChannelNumber( VOID ); EFI_STATUS EFIAPI 10 DimmType (string)( VOID ); EFI_STATUS EFIAPI 10 DdrVoltage (string)( VOID ); EFI_STATUS EFIAPI 4 DimmFreq (UINT32, value in MHz)( VOID ); EFI_STATUS EFIAPI 4 DimmSize (UINT32, value in MB)( VOID ); /// checked for non-zero) EFI_STATUS EFIAPI 2 (DWORD checksum/active field( VOID ); EFI_STATUS EFIAPI 4 (unused padding?)( VOID ); EFI_STATUS EFIAPI 10 ManufacturerIdName (string)( VOID ); EFI_STATUS EFIAPI 4 SerialNumber (4 bytes)( VOID ); EFI_STATUS EFIAPI 35 PartNumber (string)( VOID ); EFI_STATUS EFIAPI (19 bytes)( VOID ); EFI_STATUS EFIAPI 1 SlotIndex( VOID ); EFI_STATUS EFIAPI 1 PciType( VOID ); EFI_STATUS EFIAPI 1 BusNumber( VOID ); EFI_STATUS EFIAPI 1 DevFun( VOID ); EFI_STATUS EFIAPI 2 VendorId( VOID ); EFI_STATUS EFIAPI 2 DeviceId( VOID ); EFI_STATUS EFIAPI 2 SubSystemVendorId( VOID ); EFI_STATUS EFIAPI 2 SubSystemId( VOID ); EFI_STATUS EFIAPI 1 InterfaceType( VOID ); EFI_STATUS EFIAPI 1 SubClassCode( VOID ); EFI_STATUS EFIAPI 1 BaseClassCode( VOID ); EFI_STATUS EFIAPI 1 LinkSpeed( VOID ); EFI_STATUS EFIAPI 1 LinkWidth( VOID ); EFI_STATUS EFIAPI 2 (unused/checksum, checked for non-zero)( VOID ); EFI_STATUS EFIAPI (75 bytes)( VOID ); EFI_STATUS EFIAPI 1 DriveIndex( VOID ); EFI_STATUS EFIAPI 68 VendorId (string)( VOID ); EFI_STATUS EFIAPI 4 DriveSize (UINT32, in MB)( VOID ); EFI_STATUS EFIAPI 1 MediaType( VOID ); EFI_STATUS EFIAPI 1 Formfactor( VOID ); EFI_STATUS EFIAPI 1 SlotNumber( VOID ); EFI_STATUS EFIAPI 1 DeviceState( VOID ); EFI_STATUS EFIAPI (UINT32 checksum at offset 65, checked for non-zero)( VOID ); EFI_STATUS EFIAPI protocol, and dumps inventory data for the requested( VOID ); EFI_STATUS EFIAPI (cpu/dimm/pci/hdd).( VOID ); EFI_STATUS EFIAPI modes (based on Argc/Argv):( VOID ); EFI_STATUS EFIAPI global protocol pointers( VOID ); EFI_STATUS EFIAPI HOB list( VOID ); EFI_STATUS EFIAPI cached system table copies( VOID ); EFI_STATUS EFIAPI alternate protocol( VOID ); EFI_STATUS EFIAPI OffsetsTable = *Argv; // argv( VOID ); EFI_STATUS EFIAPI struct layout info only( VOID ); /// show full struct layout EFI_STATUS EFIAPI for "debug" keyword( VOID ); EFI_STATUS EFIAPI by category below( VOID ); EFI_STATUS EFIAPI to CpuCount( VOID ); EFI_STATUS EFIAPI to DimmCount( VOID ); EFI_STATUS EFIAPI to PciCount( VOID ); EFI_STATUS EFIAPI to HddCount( VOID ); EFI_STATUS EFIAPI for CPU with indexed (argc==3) path...( VOID ); EFI_STATUS EFIAPI debug flag( VOID ); EFI_STATUS EFIAPI function: AsciiStrHexToUint64 (sub_2434)( VOID ); EFI_STATUS EFIAPI EDK2 implementation( VOID ); EFI_STATUS EFIAPI leading whitespace and '0x' prefix( VOID ); EFI_STATUS EFIAPI alignment, validates range, converts hex digits( VOID ); EFI_STATUS EFIAPI function: StrLen (sub_256C)( VOID ); EFI_STATUS EFIAPI if (!String[++Length])( VOID ); EFI_STATUS EFIAPI sentinel( VOID ); EFI_STATUS EFIAPI function: StrSize (sub_22D0)( VOID ); EFI_STATUS EFIAPI check, alignment check, length cap at 0xF4240( VOID ); EFI_STATUS EFIAPI function: StrCmp (sub_2364)( VOID ); EFI_STATUS EFIAPI StrSize for validation, then character-by-character comparison( VOID ); EFI_STATUS EFIAPI function: SPrintf / UnicodeBSPrint (sub_29E0)( VOID ); EFI_STATUS EFIAPI format string parser supporting:( VOID ); EFI_STATUS EFIAPI function: StatusCodeToString (sub_28F0)( VOID ); EFI_STATUS EFIAPI string names for:( VOID ); EFI_STATUS EFIAPI function: GetHobList (sub_26CC)( VOID ); EFI_STATUS EFIAPI HOB list from gST->HobList.Raw( VOID ); EFI_STATUS EFIAPI back to searching SystemTable configuration table( VOID ); EFI_STATUS EFIAPI on failure( VOID ); EFI_STATUS EFIAPI function: DebugAssert (sub_268C)( VOID ); EFI_STATUS EFIAPI through to EFI_DEBUGGER_PROTOCOL assertion handler( VOID ); EFI_STATUS EFIAPI function: GetDebugProtocol (sub_25C4)( VOID ); EFI_STATUS EFIAPI gBS->AllocatePool, gBS->LocateProtocol to find the debug protocol( VOID ); EFI_STATUS EFIAPI in qword_4F08( VOID ); EFI_STATUS EFIAPI function: DebugPrint (sub_2644)( VOID ); EFI_STATUS EFIAPI error level against platform configuration (CMOS-based)( VOID ); EFI_STATUS EFIAPI function: HexCharToUint (sub_2404)( VOID ); EFI_STATUS EFIAPI return Char - 55; // 'A' - 10( VOID ); EFI_STATUS EFIAPI function: Uint64ToString (sub_27A4)( VOID ); EFI_STATUS EFIAPI function: AsciiStrHexToUintn (sub_2818)( VOID ); EFI_STATUS EFIAPI function: UnicodeValueToString (sub_29B8)( VOID ); EFI_STATUS EFIAPI function: UnicodeSPrint (sub_2E58)( VOID ); EFI_STATUS EFIAPI function: GetPlatformErrorLevel (sub_2E78)( VOID ); EFI_STATUS EFIAPI CMOS port 0x70/0x71 to read debug level from CMOS index 0x4B.( VOID ); EFI_STATUS EFIAPI reads hardware register 0xFDAF0490 on certain CMOS values.( VOID ); EFI_STATUS EFIAPI function: ReadUnaligned64 (sub_2F38)( VOID ); EFI_STATUS EFIAPI function: HobGuidMatch (sub_2EC8)( VOID ); #endif /* __INVENTORYAPP_H__ */