c++获取系统信息(操作系统,cpu,内存,ip,mac)

本文将介绍如何使用C++编程获取操作系统、CPU、内存、IP和MAC地址等系统信息,帮助开发者更好地理解和操作计算机环境。
摘要由CSDN通过智能技术生成


#include <stdio.h>

#include <tchar.h>
#include <windows.h>
#include "winsock.h"
#include <string>
#include <iostream>
#include <Iphlpapi.h>
using std::cout;using std::string;using std::iostream;
using std::endl;using std::ios;using std::fstream;
using std::ofstream;using std::cin;
#pragma comment( lib, "Ws2_32.lib")
#pragma comment(lib,"Iphlpapi.lib")
using namespace std;
typedef   void(WINAPI *FunctionGlobalMemoryStatusEx)(LPMEMORYSTATUSEX);//声明函数原型指针
#if (_WIN32_WINNT < 0x0600) // [zyl910] 低版本的Windows SDK没有定义 RelationProcessorPackage 等常量
#define RelationProcessorPackage 3
#define RelationGroup 4
#endif
typedef BOOL (WINAPI *LPFN_GLPI)(
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, 
PDWORD);
int get_cpu_num(void)
{
LPFN_GLPI glpi;
BOOL done = FALSE;
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = NULL;
DWORD returnLength = 0;
DWORD processorPackageCount = 0;
DWORD byteOffset = 0;


glpi = (LPFN_GLPI) GetProcAddress(
GetModuleHandle(TEXT("kernel32")),
"GetLogicalProcessorInformation");
if (NULL == glpi) 
{
_tprintf(TEXT("\nGetLogicalProcessorInformation is not supported.\n"));
return -1;
}


while (!done)
{
DWORD rc = glpi(buffer, &returnLength);


if (FALSE == rc) 
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) 
{
if (buffer) 
free(buffer);


buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(
returnLength);


if (NULL == buffer) 
{
_tprintf(TEXT("\nError: Allocation failure\n"));
return -2;
}

else 
{
_tprintf(TEXT("\nError %d\n"), GetLastError());
return -3;
}

else
{
done = TRUE;
}
}


ptr = buffer;
while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength) 
{
switch (ptr->Relationship) 
{
case RelationProcessorPackage:
processorPackageCount++;
break;
default:
break;
}
byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
ptr++;
}
free(buffer);
return processorPackageCount;
}


void  getSysteminfo(char *version,int size)
{
memset(version,0,size);
SYSTEM_INFO info;                //用SYSTEM_INFO结构判断64位AMD处理器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值