In NtQuerySystemInformation, handle request for information class 1,
now named SystemCpuInformation. Return some dummy data for now.
This commit is contained in:
parent
160e6479cf
commit
2a0df4bd60
|
@ -546,6 +546,22 @@ NTSTATUS WINAPI NtQuerySystemInformation(
|
|||
else ret = STATUS_INFO_LENGTH_MISMATCH;
|
||||
}
|
||||
break;
|
||||
case SystemCpuInformation:
|
||||
{
|
||||
SYSTEM_CPU_INFORMATION* sci;
|
||||
sci = (SYSTEM_CPU_INFORMATION *) SystemInformation;
|
||||
if (Length >= sizeof(*sci))
|
||||
{
|
||||
/* FIXME: move some code from kernel/cpu.c to process this */
|
||||
sci->Architecture = PROCESSOR_ARCHITECTURE_INTEL;
|
||||
sci->Level = 6; /* 686, aka Pentium II+ */
|
||||
sci->Revision = 0;
|
||||
sci->Reserved = 0;
|
||||
sci->FeatureSet = 0x1fff;
|
||||
}
|
||||
else ret = STATUS_INFO_LENGTH_MISMATCH;
|
||||
}
|
||||
break;
|
||||
case SystemPerformanceInformation:
|
||||
{
|
||||
SYSTEM_PERFORMANCE_INFORMATION* spi = (SYSTEM_PERFORMANCE_INFORMATION*)SystemInformation;
|
||||
|
|
|
@ -521,7 +521,7 @@ typedef enum _SECTION_INHERIT {
|
|||
|
||||
typedef enum _SYSTEM_INFORMATION_CLASS {
|
||||
SystemBasicInformation = 0,
|
||||
Unknown1,
|
||||
SystemCpuInformation = 1,
|
||||
SystemPerformanceInformation = 2,
|
||||
SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
|
||||
Unknown4,
|
||||
|
@ -908,6 +908,35 @@ typedef struct _SYSTEM_BASIC_INFORMATION {
|
|||
#endif
|
||||
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
|
||||
|
||||
/* CPU Information Class 0x01 */
|
||||
typedef struct {
|
||||
WORD Architecture;
|
||||
WORD Level;
|
||||
WORD Revision; /* combination of CPU model and stepping */
|
||||
WORD Reserved; /* always zero */
|
||||
DWORD FeatureSet; /* see bit flags below */
|
||||
} SYSTEM_CPU_INFORMATION;
|
||||
|
||||
/* definitions of bits in the Feature set for the x86 processors */
|
||||
#define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
|
||||
#define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
|
||||
#define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
|
||||
#define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
|
||||
#define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
|
||||
#define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
|
||||
#define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
|
||||
#define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
|
||||
#define CPU_FEATURE_X86 0x00000200 /* seems to be alway ON, on the '86 */
|
||||
#define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
|
||||
#define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
|
||||
#define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
|
||||
#define CPU_FEATURE_SSE 0x00002000 /* SSE extenstions (ext. MMX) */
|
||||
#define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available
|
||||
(FIXME: needs to be confirmed) */
|
||||
#define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
|
||||
#define CPU_FEATURE_DS 0x00020000 /* Debug Store */
|
||||
#define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
|
||||
|
||||
/* System Information Class 0x15 */
|
||||
typedef struct {
|
||||
ULONG CurrentSize;
|
||||
|
|
Loading…
Reference in New Issue