SYSTEM_INFO,Win32 API函数GetSystemInfo所使用的结构体。
说明:SYSTEM_INFO结构体包含了当前计算机的信息。这个信息包括计算机的体系结构、中央处理器的类型、系统中中央处理器的数量、页面的大小以及其他信息。
结构原型:typedef struct _SYSTEM_INFO { // sinf
union {
DWORDdwOemId;
struct {
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORDdwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORDdwActiveProcessorMask;
DWORDdwNumberOfProcessors;
DWORDdwProcessorType;
DWORDdwAllocationGranularity;
WORDwProcessorLevel;
WORDwProcessorRevision;
} SYSTEM_INFO;
结构成员:dwOemId:已废弃的成员,保留这个成员是为了向以前版本的Windows NT保持兼容。从Windows NT 3.51和Windows 95的预发行版本开始,使用这个成员的子分支wProcessorArchitecture。
Windows 95:系统总是把这个成员的值设为0,也就是PROCESSOR_ARCHITECTURE_INTEL的预定义值。
wProcessorArchitecture:指定系统中的中央处理器的体系结构,可以是如下的值:
PROCESSOR_ARCHITECTURE_INTEL
只适用于Windows NT: PROCESSOR_ARCHITECTURE_MIPS
只适用于Windows NT: PROCESSOR_ARCHITECTURE_ALPHA
只适用于Windows NT: PROCESSOR_ARCHITECTURE_PPC
只适用于Windows NT: PROCESSOR_ARCHITECTURE_UNKNOWN
wReserved: 保留供将来使用。
dwPageSize:指定页面的大小和页面保护和委托的颗粒。这是被 VirtualAlloc 函数使用的页大小。
lpMinimumApplicationAddress:指向应用程序和动态链接库(DLL)可以访问的最低内存地址。
pMaximumApplicationAddress:指向应用程序和动态链接库(DLL)可以访问的最高内存地址。
dwActiveProcessorMask:指定一个用来代表这个系统中装配了的中央处理器的掩码。二进制0位是处理器0;31位是处理器31。
dwNumberOfProcessors:指定系统中的处理器的数目。
dwProcessorType:Windows 95: 指定系统中中央处理器的类型。
Windows NT: 这个成员已经不再有用了,但是为了向Windows 95和以前版本的Windows NT保持兼容,使用
wProcessorArchitecture,
wProcessorLevel, 和
wProcessorRevision 三个成员定义处理器的类型。
这个成员的值是下面中的一个:
PROCESSOR_INTEL_386
PROCESSOR_INTEL_486
PROCESSOR_INTEL_PENTIUM
只适用于Windows NT: PROCESSOR_MIPS_R4000
只适用于Windows NT: PROCESSOR_ALPHA_21064
dwAllocationGranularity:指定已经被分配的虚拟内存空间的粒度。例如,如果使用
VirtualAlloc函数请求分配1byte内存空间,那么将会保留由
dwAllocationGranularity指定大小byte的地址空间。在过去,这个值被定为64K并固化在硬件中,但是其它的硬件体系结构可能需要另外的值。
wProcessorLevel:Windows 95: 不使用这个成员。
Windows NT: 指定系统体系结构依赖的处理器级别。
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_INTEL,那么
wProcessorLevel可以使如下值中的一个:
值 含义3 Intel 80386
4 Intel 80486
5 Pentium
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_MIPS,那么
wProcessorLevel 的值会是00xx的形式,xx是一个8位的立即数。这个成员可以使如下的值:
值 含义0004 MIPS R4000
如果
wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_ALPHA, 那么
wProcessorLevel 的值会是xxxx的形式,xxxx是一个16位的处理器版本数(固件中版本号的低16位),它的值可以是下表中的一个:
十进制值 含义21064 Alpha 21064
21066 Alpha 21066
21164 Alpha 21164
如果
wProcessorArchitecture 的值是PROCESSOR_ARCHITECTURE_PPC, 那么
wProcessorLevel 的值会是xxxx的形式,xxxx是一个16位的处理器版本数(处理器版本寄存器的高16位),它的值可以使下表中的一个:
十进制值 含义1 PPC 601
3 PPC 603
4 PPC 604
6 PPC 603+
9 PPC 604+
20 PPC 620
wProcessorRevision:Windows 95: 不使用这个成员。
Windows NT: 指定系统体系结构依赖的处理器修订版本号。下表显示了对于每一种处理器体系,处理器的修订版本号是如何构成的。
处理器体系 值Intel 80386 or 80486 类似xxyz的形式。如果xx等于0xFF,y-0xA 是型号,z 是步进表示符。例如,一个Intel 80486-D0 CPU 组成的系统返回0xFFD0。
如果xx不等于0xFF,'A'是步进表示符,yz 是次要步进表示符。
Intel Pentium, Cyrix, or NextGen 586 类似xxyy的形式。xx是型号,yy是步进值。例如,一个0x0201的值表明这是一个Model 2,Stepping 1的CPU。
MIPS 类似00xx的形式。xx是8位的处理器修订号(PRId寄存器的低8位)。
ALPHA 类似xxyy的形式。xxyy是处理器固件中的修订号的低16位。这个值被显示成这个样子:Model 'A'+xx, yy被忽略。
PPC 类似xxyy的形式。xxyy是处理器版本寄存器的低16位。这个值被显示为定点小数:xx.yy
分享到:
相关推荐
1. **GetSystemInfo**: 这个函数可以从kernel32.dll库中调用,它返回一个SYSTEM_INFO结构体,其中包含了处理器类型、处理器数量、页面大小、系统内存总量等信息。 ```cpp #include SYSTEM_INFO sysInfo; ...
1. **GetSystemInfo**: 这个函数来自kernel32.dll库,它返回一个SYSTEM_INFO结构体,其中包含了关于处理器和系统内存的详细信息。例如,你可以通过该结构体的wProcessorArchitecture字段来判断CPU架构,...
在VB中,首先需要声明该函数,然后创建一个SYSTEM_INFO结构体实例,最后调用函数将信息填充到结构体中。通过解析这个结构体,我们可以知道系统有多少个处理器以及它们的特性。 3. **GetPerformanceInfo函数**: 这...
// 在这里,你可以进一步处理SYSTEM_INFO结构体中的信息来获取CPUID // ... } return "CPU ID"; } } ``` 接下来,我们要获取硬盘序列号。硬盘序列号是硬盘的唯一标识,通常可以通过WMI(Windows Management ...
要实现mprop逆向,我们需要了解init进程的实现机制并模拟__system_property_find函数来获取prop_info结构体。然后,我们可以修改value字段的值来实现RO属性的修改。 dump和ptrace技术 为了实现mprop逆向,我们需要...
可以通过 GetNativeSystemInfo 函数获取系统信息,该函数返回一个 SYSTEM_INFO 结构体,该结构体包含了系统的各种信息,如处理器体系结构、分页大小、进程最小寻址空间、进程最大寻址空间等。 可以通过 ...
7. **SYSTEM_INFO结构体**:该结构体包含了关于系统硬件配置的信息,如最小和最大应用程序地址,这在内存管理中很有用,因为它定义了虚拟地址空间的范围。 8. **内存的基本信息**:`MEMORY_BASIC_INFORMATION`...
其中,`lpSystemInfo`是一个指向`SYSTEM_INFO`结构体的指针,用于返回系统信息。 #### 三、`SYSTEM_INFO`结构体解析 `SYSTEM_INFO`结构体包含了关于计算机系统的信息,例如处理器类型、页大小等。以下是该结构体的...
1. 初始化:创建必要的数据结构,如SYSTEM_INFO结构体,用于存储硬件信息。 2. 调用API:调用Windows API函数,如`GetSystemInfo`,填充预先定义的数据结构。 3. 解析信息:解析返回的硬件信息,如处理器核心数、...
USB_Init 函数的主要功能是初始化三个全局指针,指向 DEVICE_INFO、USER_STANDARD_REQUESTS 和 DEVICE_PROP 结构体。这些结构体都是与具体设备枚举和功能实现相关的,定义在 usb_prop.c 和 usb_desc.c 文件中。 ...
其中GetSystemInfo函数填充SYSTEM_INFO结构体,包含处理器架构、页面大小、处理器类型等信息。 内存管理的API还涉及到内存块的锁定和解锁,其中VirtualLock用于锁定一个或多个页面在物理内存中,防止被系统移出内存...
在`Cpucount.cpp`中,`GetSystemInfo`函数会被调用来获取`SYSTEM_INFO`结构体,其中包含了关于处理器的信息。 3. **SYSTEM_INFO 结构体**: `SYSTEM_INFO`是Windows API定义的一个结构体,包含了系统硬件的详细...
此外,还定义了一个名为`GetDeviceIdList`的函数,它接收一个`DEVICE_INFO`结构体数组的指针以及一个整型引用`count`作为参数。 #### C#中的结构体定义 接下来,在C#中定义相应的结构体以匹配C++中的定义: ```...
这个函数返回一个ADAPTER_INFO结构体,其中包含了网卡的相关信息。 3. **注册表访问**:另一种方法是通过VB API访问注册表,特别是在早期版本的Windows中,MAC地址可能存储在注册表的特定键下。例如,`HKEY_LOCAL_...
### TDI_CONNECTION_INFO结构体 此外,`TDI_CONNECTION_INFO`结构体用于存储传输层接口(Transport Driver Interface,TDI)连接信息,包括连接状态、事件、发送和接收的数据单元数、错误计数、吞吐量、延迟、缓冲...
例如,Windows API中的`GetSystemInfo`函数需要一个`SYSTEM_INFO`结构体作为参数,以获取系统信息。在C#中,我们需要先定义这个结构体,使用`StructLayoutAttribute`和`LayoutKind.Sequential`来指示其内存布局,...
`SYSTEM_INFO`结构体中与物理内存相关的字段有`dwNumberOfProcessors`(处理器数量)、`dwPageSize`(页面大小)以及`lpMaximumApplicationAddress`和`lpMinimumApplicationAddress`(内存地址范围)。但最直接反映...
2. 隐藏光标:程序使用CONSOLE_CURSOR_INFO结构体和SetConsoleCursorInfo函数来隐藏光标。 3. 设置字体颜色:程序使用SetConsoleTextAttribute函数来设置控制台中的字体颜色。 4. 获取当前窗口句柄:程序使用...
例如,CPU_INFO结构体的定义如下: ```csharp [StructLayout(LayoutKind.Sequential)] public struct CPU_INFO { public uint dwOemId; public uint dwPageSize; // 其他成员... } ``` 5. **调用API函数并...
2. 定义结构体:`SYSTEM_INFO`结构体包含了系统信息,包括处理器个数。在易语言中,需要创建一个对应的易语言结构体,并映射到Windows API中的`SYSTEM_INFO`结构。 3. 分配内存:由于`GetSystemInfo`函数需要一个...