用C语言实现硬件信息的获取

本文档展示了如何使用C语言来获取硬件信息,包括CPU、BIOS、内存、主板等详细信息。通过定义和使用一系列结构体,实现了对系统管理BIOS(SMBIOS)数据的解析,以获取系统硬件的详细规格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用C语言实现硬件信息的获取,包括CPU、BIOS、内存、主板、集成设备、端口、主板插槽 、Cache等。

 #ifndef __SM_BIOS_H__
#define __SM_BIOS_H__

#define TRUE 1
#define FALSE 0
#define ERROR -1
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned double QWORD;


typedef struct
{
    BYTE Type;
    BYTE Length;
    WORD Handle;
}SMBStructsHeader;

typedef struct
{
    BYTE        AnchorString[4];
    BYTE        Checksum;
    BYTE        EntryPointLength;
    BYTE        SMBMajorVer;
    BYTE        SMBMinorVer;
    WORD    MaxStructSize;
    BYTE        EntryPointRev;
    BYTE        FormattedArea[5];
    BYTE        InterAnchorStr[5];
    BYTE        InterChecksum;
    WORD    StructTableLength;
    DWORD StructTableAddr;
    WORD    NumOfSMBStructs;
    BYTE        SMBBCDRev;
}SMBStructTableEntryPoint;

typedef struct
{
    SMBStructsHeader Header;
    BYTE        Vendor;
    BYTE        Version;
    WORD    StartingAddrSeg;
    BYTE        ReleaseDate;
    BYTE        ROMSize;
    BYTE        Characteristics[8];
    WORD    Reserved;
    BYTE        MajorRelease;
    BYTE        MinorRelease;
    BYTE        FirmwareMajorRelease;
    BYTE        FirmwareMinorRelease;
}SMBBIOSInfo;

typedef struct
{
    DWORD time_low;
    WORD    time_mid;
    WORD    time_hi_and_ver;
    BYTE        clock_seq_hi_and_res;
    BYTE        clock_seq_low;
    BYTE        Node[6];
}UUIDStruct;

typedef struct
{
    SMBStructsHeader Header;
    BYTE Manufacturer;
    BYTE ProductName;
    BYTE Version;
    BYTE SerialNumber;
    UUIDStruct UUID;
    BYTE WakeupType;
    /* 2.4+ */
    BYTE SKUNumber;
    BYTE Family;
}SMBSysInfo;

typedef struct
{
    SMBStructsHeader Header;
    BYTE Manufacturer;
    BYTE Product;
    BYTE Version;
    BYTE SerialNumber;
    BYTE AssetTag;
    BYTE FeatureFlags;
    BYTE LocationInChassis;
    WORD ChassisHandle;
    BYTE BoardType;
    BYTE Resvd[2];
}SMBBaseBoardInfo;

typedef struct
{
    SMBStructsHeader Header;
    BYTE InterRefDesignator;
    BYTE InterConType;
    BYTE ExterRefDesignator;
    BYTE ExterConType;
    BYTE PortType;
}SMBPortInfo;

typedef struct
{
    SMBStructsHeader Header;
    BYTE Manufacturer;
    BYTE Type;
    BYTE Version;
    BYTE SerialNumber;
    BYTE AssetTagNum;
    BYTE BootupState;
    BYTE PowerSupplyState;
    BYTE ThermalState;
    BYTE SecurityStatus;
    DWORD OEMRes;
    /* 2.3+ */
    BYTE Height;
    BYTE NumOfPowerCords;
    BYTE Resved[3]; /* Contained Elements */
}SMBSysEnclosure;

typedef struct
{
    SMBStructsHeader Header;
    BYTE SocketDesignation;
    BYTE Type;
    BYTE Family;
    BYTE Manufacturer;
    BYTE ID[8];
    BYTE Version;
    BYTE Voltage;
    WORD ExternalClock;
    WORD MaxSpeed;
    WORD CurrentSpeed;
    BYTE Status;
    BYTE Upgrade;
    WORD L1CacheHandle;
    WORD L2CacheHandle;
    WORD L3CacheHandle;
    /* 2.3+ */
    BYTE SerialNumber;
    BYTE AssetTag;
    BYTE PartNumber;
    /* 2.5+ */
    BYTE CoreCount;
    BYTE CoreEnabled;
    BYTE ThreadCount;
    WORD Characterisitics;
    /* 2.6+ */
    WORD ProcessorFamily2;
}SMBProcessorInfo;

typedef struct
{
    SMBStructsHeader Header;
    BYTE SocketDesignation;
    WORD Configuration;
    WORD MaxCacheSize;
    WORD InstalledSize;
    WORD SupportedSRAMType;
    WORD CurrentSRAMType;
    BYTE Speed;
    BYTE ErrCorrectionType;
    BYTE SysCacheType;
    BYTE Associativity;
}SMBCacheInfo;

typedef struct
{
    SMBStructsHeader Header;
    BYTE Designation;
    BYTE Type;
    BYTE DataBusWidth;
    BYTE CurrentUsage;
    BYTE Length;
    WORD ID;
    BYTE Characteristics1;
    BYTE Characteristics2;
    /* 2.6+ */
    WORD SegGroupNum;
    BYTE BusNumber;
    BYTE Dev_FuncNum;
}SMBSystemSlots;

typedef struct
{
    SMBStructsHeader Header;
    BYTE Location;
    BYTE Use;
    BYTE MemErrCorrection;
    DWORD MaxCapacity;
    WORD MemErrInfoHandle;
    WORD NumOfMemDevices;
}SMBPhyMemArray;

typedef struct
{
    SMBStructsHeader Header;
    WORD PhyMemArrayHandle;
    WORD MemErrInfoHandle;
    WORD TotalWidth;
    WORD DataWidth;
    WORD Size;
    BYTE FormFactor;
    BYTE DeviceSet;
    BYTE DeviceLocator;
    BYTE BankLocator;
    BYTE Memo
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值