(1) GetSystemInfo函數
功能:返回關於當前系統的信息。
函數原型:
void WINAPI GetSystemInfo
(
_Out_ LPSYSTEM_INFO lpSystemInfo//LPSYSTEM_INFO結構體指針
);
SYSTEM_INFO結構體
功能:包括當前計算機的信息。這個信息包括計算機的體系結構、中央處理器的類型、系統中中央處理器的數量、頁面的大小以及其他信息。
原型:
typedef struct _SYSTEM_INFO {
union{
DWORD dwOemId;//已經廢棄的成員
struct {
WORD wProcessorArchitecture;//指定系統中的中央處理器的體系結構
WORD wReserved;//保留位
};
};
DWORD dwPageSize;//指定頁面的大小和頁面保護和委託的顆粒。這是被 VirtualAlloc 函數使用的頁大小
LPVOID lpMinimumApplicationAddress;//指向應用程序和動態鏈接庫(DLL)可以訪問的最低內存地址
LPVOID lpMaximumApplicationAddress;//指向應用程序和動態鏈接庫(DLL)可以訪問的最高內存地址
DWORD dwActiveProcessorMask;//指定一個用來代表這個系統中裝配了的中央處理器的掩碼。二進制0位是處理器0;31位是處理器31
DWORD dwNumberOfProcessors;//指定系統中的處理器的數目
DWORD dwProcessorType;//指定系統中中央處理器的類型
DWORD dwAllocationGranularity;//指定已經被分配的虛擬內存空間的粒度
WORD wProcessorLevel;//指定系統體系結構依賴的處理器級別
WORD wProcessorRevision;//指定系統體系結構依賴的處理器修訂版本號
}SYSTEM_INFO;
(2)下面是GetSystemInfo函數應用的具體代碼:
#include <Windows.h>
#include <stdio.h>
int GetProcessorNum(void);
int main()
{
int iProcessNum;
iProcessNum = GetProcessorNum();
printf("本系統處理器個數爲:%d\n",iProcessNum);
getchar();
return 0;
}
int GetProcessorNum(void)
{
SYSTEM_INFO sysInfo; //定義系統信息的結構體
GetSystemInfo(&sysInfo);
printf("中央處理器的體系結構爲%d\n",sysInfo.wProcessorArchitecture); //獲取系統信息
printf("系統頁面大小爲%d\n",sysInfo.dwPageSize);
printf("系統處理器數量%d\n",sysInfo.dwNumberOfProcessors);
printf("已經被分配的虛擬內存空間的粒度%d\n",sysInfo.dwAllocationGranularity);
return sysInfo.dwNumberOfProcessors;
}