Skip to content

Releases: MagmaVRC/LibSerials

2.0.0

Choose a tag to compare

@MagmaVRC MagmaVRC released this 09 Mar 01:33

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

1.1.0

Choose a tag to compare

@MagmaVRC MagmaVRC released this 20 May 18:40
6caa1d1

🎉 1.1 Release

Refactor serial management and improve performance

  • Added Initialized flag to InitializeSerials and FreeSerials to prevent redundant calls.
  • Updated HDD_Serials to return const char* const* for efficiency, using a static cache for serials.
  • Changed return types of BIOS, Chassis, System, Baseboard, and CPU functions to const char* to reduce overhead.
  • Replaced Debug function with DebugUI in the LibSerials namespace, maintaining functionality.
  • Adjusted component change percentages
  • Added DllMain function for DLL process attachment to ensure proper initialization.

1.0.0

Choose a tag to compare

@MagmaVRC MagmaVRC released this 09 Feb 01:25

🎉 1.0 Release

I have included pre-built binaries for use

  • .dll For dynamic linking
  • Executable For Serial Information
  • .lib|.h For Static Linking