1. 程式人生 > >windows程式設計學習——獲取系統資訊

windows程式設計學習——獲取系統資訊

(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;
}