Skip to content

2.0.0

Latest

Choose a tag to compare

@MagmaVRC MagmaVRC released this 09 Mar 01:33
· 3 commits to master since this release

Major rewrite from header-only to proper .hpp/.cpp static library.

Breaking Changes:

  • All functions now return std::string / std::vectorstd::string instead of const char*
  • Removed Hardwareinfo.hpp — everything is now in LibSerials.hpp + LibSerials.cpp
  • HWID format changed: 4 components (baseboard-uuid-cpu-hdd), 8 hex chars each
  • Component enum reduced to Baseboard, SMBIOS, CPU, HDD
  • All build configs changed from DynamicLibrary to StaticLibrary

New Features:

  • SMBIOS structs fixed to match spec (packed, correct field sizes/order)
  • Added SMBIOS types: Cache (7), Port Connector (8), System Slot (9), Physical Memory Array (16), Battery (22), TPM (43)
  • Expanded CPU info: socket, family, manufacturer, version, clock speeds, core/thread counts
  • GPU name query via DXGI
  • MAC address virtual adapter filtering (VMware, VirtualBox, Hyper-V, WSL)
  • FNV-1a 64-bit hash (folded to 32-bit) for HWID generation

Bug Fixes:

  • Fixed memory leak: SMBIOS HeapAlloc buffer now freed in FreeSerials()
  • Thread-safe initialization via std::call_once
  • Bounds-checked SMBIOS parsing prevents crashes from spoofed/null serials
  • WMI COM init handles RPC_E_CHANGED_MODE and RPC_E_TOO_LATE
  • HDD serial read validates offset within buffer, uses strnlen
  • Fixed SMBIOS struct field sizes (ProcessorID, clock fields, cache handles)
  • Fixed System_ValidateHWID penalty mapping