SYSTEM_INFO
SYSTEM_INFO,Win32 API函數(shù)GetSystemInfo所使用的結(jié)構(gòu)體。
說(shuō)明:SYSTEM_INFO結(jié)構(gòu)體包含了當(dāng)前計(jì)算機(jī)的信息。這個(gè)信息包括計(jì)算機(jī)的體系結(jié)構(gòu)、中央處理器的類(lèi)型、系統(tǒng)中中央處理器的數(shù)量、頁(yè)面的大小以及其他信息。
結(jié)構(gòu)原型:

typedef struct _SYSTEM_INFO
{ // sinf

union
{
DWORD dwOemId;

struct
{
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;

} SYSTEM_INFO;
結(jié)構(gòu)成員:dwOemId: 已廢棄的成員,保留這個(gè)成員是為了向以前版本的Windows NT保持兼容。從Windows NT 3.51和Windows 95的預(yù)發(fā)行版本開(kāi)始,使用這個(gè)成員的子分支wProcessorArchitecture。
Windows 95:系統(tǒng)總是把這個(gè)成員的值設(shè)為0,也就是PROCESSOR_ARCHITECTURE_INTEL的預(yù)定義值。
wProcessorArchitecture: 指定系統(tǒng)中的中央處理器的體系結(jié)構(gòu),可以是如下的值:
PROCESSOR_ARCHITECTURE_INTEL
只適用于Windows NT: PROCESSOR_ARCHITECTURE_MIPS
只適用于Windows NT: PROCESSOR_ARCHITECTURE_ALPHA
只適用于Windows NT: PROCESSOR_ARCHITECTURE_PPC
只適用于Windows NT: PROCESSOR_ARCHITECTURE_UNKNOWN
wReserved: 保留供將來(lái)使用。
dwPageSize: 指定頁(yè)面的大小和頁(yè)面保護(hù)和委托的顆粒。這是被 VirtualAlloc 函數(shù)使用的頁(yè)大小。
lpMinimumApplicationAddress: 指向應(yīng)用程序和動(dòng)態(tài)鏈接庫(kù)(DLL)可以訪問(wèn)的最低內(nèi)存地址。
pMaximumApplicationAddress: 指向應(yīng)用程序和動(dòng)態(tài)鏈接庫(kù)(DLL)可以訪問(wèn)的最高內(nèi)存地址。
dwActiveProcessorMask: 指定一個(gè)用來(lái)代表這個(gè)系統(tǒng)中裝配了的中央處理器的掩碼。二進(jìn)制0位是處理器0;31位是處理器31。
dwNumberOfProcessors: 指定系統(tǒng)中的處理器的數(shù)目。
dwProcessorType: Windows 95: 指定系統(tǒng)中中央處理器的類(lèi)型。
Windows NT: 這個(gè)成員已經(jīng)不再有用了,但是為了向Windows 95和以前版本的Windows NT保持兼容,使用
wProcessorArchitecture,
wProcessorLevel, 和
wProcessorRevision 三個(gè)成員定義處理器的類(lèi)型。
這個(gè)成員的值是下面中的一個(gè):
PROCESSOR_INTEL_386
PROCESSOR_INTEL_486
PROCESSOR_INTEL_PENTIUM
只適用于Windows NT: PROCESSOR_MIPS_R4000
只適用于Windows NT: PROCESSOR_ALPHA_21064
dwAllocationGranularity: 指定已經(jīng)被分配的虛擬內(nèi)存空間的粒度。例如,如果使用
VirtualAlloc函數(shù)請(qǐng)求分配1byte內(nèi)存空間,那么將會(huì)保留由
dwAllocationGranularity指定大小byte的地址空間。在過(guò)去,這個(gè)值被定為64K并固化在硬件中,但是其它的硬件體系結(jié)構(gòu)可能需要另外的值。
wProcessorLevel: Windows 95: 不使用這個(gè)成員。
Windows NT: 指定系統(tǒng)體系結(jié)構(gòu)依賴(lài)的處理器級(jí)別。
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_INTEL,那么
wProcessorLevel可以使如下值中的一個(gè):
值 含義 3 Intel 80386
4 Intel 80486
5 Pentium
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_MIPS,那么
wProcessorLevel 的值會(huì)是00xx的形式,xx是一個(gè)8位的立即數(shù)。這個(gè)成員可以使如下的值:
值 含義 0004 MIPS R4000
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_ALPHA, 那么
wProcessorLevel 的值會(huì)是xxxx的形式,xxxx是一個(gè)16位的處理器版本數(shù)(固件中版本號(hào)的低16位),它的值可以是下表中的一個(gè):
十進(jìn)制值 含義 21064 Alpha 21064
21066 Alpha 21066
21164 Alpha 21164
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_PPC, 那么
wProcessorLevel 的值會(huì)是xxxx的形式,xxxx是一個(gè)16位的處理器版本數(shù)(處理器版本寄存器的高16位),它的值可以使下表中的一個(gè):
十進(jìn)制值 含義 1 PPC 601
3 PPC 603
4 PPC 604
6 PPC 603+
9 PPC 604+
20 PPC 620
wProcessorRevision: Windows 95: 不使用這個(gè)成員。
Windows NT: 指定系統(tǒng)體系結(jié)構(gòu)依賴(lài)的處理器修訂版本號(hào)。下表顯示了對(duì)于每一種處理器體系,處理器的修訂版本號(hào)是如何構(gòu)成的。
處理器體系 值 Intel 80386 or 80486 類(lèi)似xxyz的形式。如果xx等于0xFF,y-0xA 是型號(hào),z 是步進(jìn)表示符。例如,一個(gè)Intel 80486-D0 CPU 組成的系統(tǒng)返回0xFFD0。
如果xx不等于0xFF,'A'是步進(jìn)表示符,yz 是次要步進(jìn)表示符。
Intel Pentium, Cyrix, or NextGen 586 類(lèi)似xxyy的形式。xx是型號(hào),yy是步進(jìn)值。例如,一個(gè)0x0201的值表明這是一個(gè)Model 2,Stepping 1的CPU。
MIPS 類(lèi)似00xx的形式。xx是8位的處理器修訂號(hào)(PRId寄存器的低8位)。
ALPHA 類(lèi)似xxyy的形式。xxyy是處理器固件中的修訂號(hào)的低16位。這個(gè)值被顯示成這個(gè)樣子:Model 'A'+xx, yy被忽略。
PPC 類(lèi)似xxyy的形式。xxyy是處理器版本寄存器的低16位。這個(gè)值被顯示為定點(diǎn)小數(shù):xx.yy
注釋?zhuān)?/strong>
從Windows NT 3.51和Windows 95的預(yù)發(fā)行版本開(kāi)始,SYSTEM_INFO結(jié)構(gòu)發(fā)生了如下變化:
·dwOemId 成員被更改成一個(gè)結(jié)構(gòu)。這個(gè)結(jié)構(gòu)提供了一條新的可以用來(lái)描述Windows NT處理器體系結(jié)構(gòu)的路,同時(shí)保持了與Windows 95 以及Windows NT以前版本的兼容性。
·dwProcessorType 成員在Windows NT系統(tǒng)上已經(jīng)被廢棄,但是仍在Windows 95系統(tǒng)中使用。
·一個(gè)先前保留的位于結(jié)構(gòu)末端的雙字值被wProcessorLevel 和 wProcessorRevision 兩個(gè)成員替代。Windows 95 不使用這兩個(gè)成員。
快捷信息:
頭文件:winbase.h
請(qǐng)參見(jiàn)GetSystemInfo
參考MSDN