Repository navigation
Releases: MagmaVRC/LibSerials
Releases · MagmaVRC/LibSerials
Release list
2.0.0
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
🎉 1.1 Release
Refactor serial management and improve performance
- Added
Initializedflag toInitializeSerialsandFreeSerialsto prevent redundant calls. - Updated
HDD_Serialsto returnconst 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
Debugfunction withDebugUIin theLibSerialsnamespace, maintaining functionality. - Adjusted component change percentages
- Added
DllMainfunction for DLL process attachment to ensure proper initialization.