/** @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 HexStringToUint64( VOID ); EFI_STATUS EFIAPI UnicodeStrLen( VOID ); EFI_STATUS EFIAPI UnicodeStrSize( VOID ); EFI_STATUS EFIAPI UnicodeSPrintEx( VOID ); EFI_STATUS EFIAPI InventoryDebugAssert( VOID ); EFI_STATUS EFIAPI InventoryDebugPrint( VOID ); EFI_STATUS EFIAPI AsciiHexCharToUint( 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: HexStringToUint64 ( 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: UnicodeStrLen ( VOID ); EFI_STATUS EFIAPI if (!String[++Length])( VOID ); EFI_STATUS EFIAPI sentinel( VOID ); EFI_STATUS EFIAPI function: UnicodeStrSize ( VOID ); EFI_STATUS EFIAPI check, alignment check, length cap at 0xF4240( VOID ); EFI_STATUS EFIAPI function: UnicodeStrCmp ( VOID ); EFI_STATUS EFIAPI UnicodeStrSize for validation, then character-by-character comparison( VOID ); EFI_STATUS EFIAPI function: UnicodeSPrintEx ( VOID ); EFI_STATUS EFIAPI format string parser supporting:( VOID ); EFI_STATUS EFIAPI function: StatusCodeToString ( VOID ); EFI_STATUS EFIAPI string names for:( VOID ); EFI_STATUS EFIAPI function: GetHobListFromSystemTable ( 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: InventoryDebugAssert ( VOID ); EFI_STATUS EFIAPI through to EFI_DEBUGGER_PROTOCOL assertion handler( VOID ); EFI_STATUS EFIAPI function: LocateDebugSupportProtocol ( 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: InventoryDebugPrintIfEnabled ( VOID ); EFI_STATUS EFIAPI error level against platform configuration (CMOS-based)( VOID ); EFI_STATUS EFIAPI function: AsciiHexCharToUint ( VOID ); EFI_STATUS EFIAPI return Char - 55; // 'A' - 10( VOID ); EFI_STATUS EFIAPI function: Uint64ToString ( VOID ); EFI_STATUS EFIAPI function: AsciiStrHexToUintn ( VOID ); EFI_STATUS EFIAPI function: UnicodeValueToString ( VOID ); EFI_STATUS EFIAPI function: UnicodeSPrintBounded ( VOID ); EFI_STATUS EFIAPI function: GetPlatformErrorLevel ( 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 ( VOID ); EFI_STATUS EFIAPI function: HobGuidMatches ( VOID ); #endif /* __INVENTORYAPP_H__ */