You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The HWID is generated from 4 hardware components, each hashed with FNV-1a (64-bit folded to 32-bit) producing an 8 character hex segment:
XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
baseboard uuid cpu hdd
Validation
System_ValidateHWID compares a saved HWID against the current hardware. Each component has a configurable penalty weight. If the total penalty for changed components stays within the threshold (default 40), validation passes.
All functions return std::string or std::vector<std::string>. Call InitializeSerials() before use and FreeSerials() to clean up.
Lifecycle
Function
Description
InitializeSerials()
Parses SMBIOS tables (thread-safe, call once)
FreeSerials()
Frees all parsed data and SMBIOS buffer
BIOS
Function
Description
BIOS_Vendor()
BIOS vendor name
BIOS_Version()
BIOS version string
BIOS_Date()
BIOS release date
System
Function
Description
System_Manufacturer()
System manufacturer
System_Product()
System product name
System_Version()
System version
System_Serial()
System serial number
System_SKU()
System SKU identifier
System_Family()
System family
System_UUID()
System UUID
System_HWID()
Generated hardware ID string
System_ValidateHWID(saved)
Validate HWID against current hardware
Baseboard
Function
Description
Baseboard_Manufacturer()
Baseboard manufacturer
Baseboard_Product()
Baseboard product name
Baseboard_Serial()
Baseboard serial (via WMI)
Chassis
Function
Description
Chassis_Manufacturer()
Chassis manufacturer
Chassis_Version()
Chassis version
Chassis_Serial()
Chassis serial number
CPU
Function
Description
CPU_Product()
CPU product name (via CPUID)
CPU_Serial()
CPU serial number (via CPUID)
CPU_Socket()
Socket designation
CPU_Family()
Processor family
CPU_Manufacturer()
CPU manufacturer
CPU_Version()
CPU version string
CPU_ClockSpeed()
Current speed in MHz
CPU_MaxSpeed()
Max speed in MHz
CPU_Cores()
Core count
CPU_Threads()
Thread count
GPU
Function
Description
GPU_Name()
Primary GPU name (via DXGI)
MAC Address
Function
Description
MACAddress_List()
All MAC addresses
MACAddress_Main()
Primary non-virtual MAC address
HDD
Function
Description
HDD_Serials()
Serial numbers for all physical drives
TPM
Function
Description
TPM_Present()
Whether a TPM device was found
TPM_Vendor()
TPM vendor ID
TPM_SpecVersion()
TPM spec version
TPM_FirmwareVersion()
TPM firmware version
Cache / Slots / Memory / Battery
Function
Description
Cache_Count()
Number of cache entries
Cache_Designation(i)
Cache designation string
Slot_Count()
Number of system slots
Slot_Designation(i)
Slot designation string
Slot_Type(i)
Slot type
MemoryArray_Count()
Number of memory arrays
MemoryArray_MaxCapacity(i)
Max capacity
MemoryArray_DeviceCount(i)
Device count
Battery_Count()
Number of batteries
Battery_Location(i)
Battery location
Battery_Manufacturer(i)
Battery manufacturer
Component Percentages
Function
Description
Component_GetPercentage(item)
Get penalty weight for a component
Component_SetPercentage(item, value)
Set penalty weight for a component
Building
The project builds as a static library (.lib) for Debug, Release, and Library configurations. The ExeRelease|x64 configuration builds a console application with the built-in debug UI.
Requires: Visual Studio 2022+ with C++20 support, Windows SDK 10.0.
Contribution
Feel free to contribute by submitting pull requests, reporting issues, or suggesting new features.
About
Small C++ Library For Gathering Serial Information About the System