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

用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 MemoryType;
    WORD TypeDetail;
    /* 2.3+ */
    WORD Speed;
    BYTE Manufacturer;
    BYTE SerialNumber;
    BYTE AssetTag;
    BYTE PartNumber;
    /* 2.6+ */
    BYTE Attributes;
}SMBMemDevice;

typedef struct
{
    SMBStructsHeader Header;
    DWORD StartingAddr;
    DWORD EndingAddr;
    WORD MemArrayHandle;
    BYTE PartitionWidth;
}MemArrayMappedAddr;

typedef struct
{
    SMBStructsHeader Header;
    BYTE DeviceType;
    BYTE DescriptionStr;
}OnBoardDeviceInfo;

DWORD GetFlagPos(BYTE *flag, DWORD start, DWORD end);
DWORD GetStruct(DWORD TableAddress, WORD StructCount, BYTE Type, BYTE n);
BYTE  *ReadStr(DWORD handle, BYTE n);
BYTE CheckBit(WORD value, BYTE bit);

/*BYTE *GenUUID(UUIDStruct uuid);*/
/*BYTE *GenWakeupType(BYTE value);*/
/*BYTE *GenEnclosureType(BYTE value);*/
/*BYTE *Gen
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值