From 93647509cc57a52d078b1a5d262648d7431c96ed Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 4 Nov 2000 13:52:12 +0000 Subject: [PATCH] Fixed some system information stuff svn path=/trunk/; revision=1423 --- reactos/include/ddk/zwtypes.h | 196 ++++++++------- reactos/lib/kernel32/misc/sysinfo.c | 20 +- reactos/lib/ntdll/rtl/time.c | 18 +- reactos/ntoskrnl/ex/sysinfo.c | 366 +++++++++++++++------------- 4 files changed, 307 insertions(+), 293 deletions(-) diff --git a/reactos/include/ddk/zwtypes.h b/reactos/include/ddk/zwtypes.h index 16484785847..7a910935b5a 100644 --- a/reactos/include/ddk/zwtypes.h +++ b/reactos/include/ddk/zwtypes.h @@ -120,48 +120,48 @@ enum _SYSTEM_INFORMATION_CLASS SystemBasicInformation = 0, /* Q */ SystemProcessorInformation = 1, /* Q */ SystemPerformanceInformation = 2, /* Q */ - SystemTimeInformation = 3, /* Q */ - SystemPathInformation = 4, + SystemTimeOfDayInformation = 3, /* Q */ + SystemPathInformation = 4, /* Q (checked build only) */ SystemProcessInformation = 5, /* Q */ - SystemServiceDescriptorTableInfo = 6, /* Q */ - SystemIoConfigInformation = 7, /* Q */ - SystemProcessorTimeInformation = 8, /* Q */ - SystemNtGlobalFlagInformation = 9, /* QS */ - SystemInformation10 = 10, + SystemCallCountInfoInformation = 6, /* Q */ + SystemDeviceInformation = 7, /* Q */ + SystemProcessorPerformanceInformation = 8, /* Q */ + SystemFlagsInformation = 9, /* QS */ + SystemCallTimeInformation = 10, SystemModuleInformation = 11, /* Q */ - SystemResourceLockInformation = 12, /* Q */ - SystemInformation13 = 13, - SystemInformation14 = 14, - SystemInformation15 = 15, + SystemLocksInformation = 12, /* Q */ + SystemStackTraceInformation = 13, + SystemPagedPoolInformation = 14, + SystemNonPagedPoolInformation = 15, SystemHandleInformation = 16, /* Q */ SystemObjectInformation = 17, /* Q */ SystemPageFileInformation = 18, /* Q */ - SystemInstructionEmulationInfo = 19, /* Q */ - SystemInformation20 = 20, - SystemCacheInformation = 21, /* QS */ + SystemVdmInstemulInformation = 19, /* Q */ + SystemVdmBopInformation = 20, + SystemFileCacheInformation = 21, /* QS */ SystemPoolTagInformation = 22, /* Q (checked build only) */ - SystemProcessorScheduleInfo = 23, /* Q */ - SystemDpcInformation = 24, /* QS */ + SystemInterruptInformation = 23, /* Q */ + SystemDpcBehaviourInformation = 24, /* QS */ SystemFullMemoryInformation = 25, SystemLoadGdiDriverInformation = 26, /* S (callable) */ SystemUnloadGdiDriverInformation = 27, /* S (callable) */ SystemTimeAdjustmentInformation = 28, /* QS */ - SystemInformation29 = 29, - SystemInformation30 = 30, - SystemInformation31 = 31, - SystemCrashDumpSectionInfo = 32, /* Q */ - SystemProcessorFaultCountInfo = 33, /* Q */ - SystemCrashDumpStateInfo = 34, /* Q */ - SystemDebuggerInformation = 35, /* Q */ - SystemThreadSwitchCountersInfo = 36, /* Q */ - SystemQuotaInformation = 37, /* QS */ - SystemLoadDriver = 38, /* S */ - SystemPrioritySeparationInfo = 39, /* S */ - SystemInformation40 = 40, - SystemInformation41 = 41, - SystemInformation42 = 42, - SystemInformation43 = 43, - SystemTimeZoneInformation = 44, /* QS */ + SystemSummryMemoryInformation = 29, + SystemNextEventIdInformation = 30, + SystemEventIdsInformation = 31, + SystemCrashDumpInformation = 32, /* Q */ + SystemExceptionInformation = 33, /* Q */ + SystemCrashDumpStateInformation = 34, /* Q */ + SystemKernelDebuggerInformation = 35, /* Q */ + SystemContextSwitchInformation = 36, /* Q */ + SystemRegistryQuotaInformation = 37, /* QS */ + SystemExtendServiceTableInformation = 38, /* S */ + SystemPrioritySeperation = 39, /* S */ + SystemPlugPlayBusInformation = 40, + SystemDockInformation = 41, + SystemPowerInformation = 42, + SystemProcessorSpeedInformation = 43, + SystemCurrentTimeZoneInformation = 44, /* QS */ SystemLookasideInformation = 45, /* Q */ SystemInformationClassMax @@ -171,62 +171,60 @@ enum _SYSTEM_INFORMATION_CLASS typedef struct _SYSTEM_BASIC_INFORMATION { - DWORD AlwaysZero; - ULONG KeMaximumIncrement; - ULONG MmPageSize; - ULONG MmNumberOfPhysicalPages; - ULONG MmLowestPhysicalPage; - ULONG MmHighestPhysicalPage; - PVOID MmLowestUserAddress; - PVOID MmLowestUserAddress1; - PVOID MmHighestUserAddress; - DWORD KeActiveProcessors; - USHORT KeNumberProcessors; - + ULONG Reserved; + ULONG TimerResolution; + ULONG PageSize; + ULONG NumberOfPhysicalPages; + ULONG LowestPhysicalPageNumber; + ULONG HighestPhysicalPageNumber; + ULONG AllocationGranularity; + ULONG MinimumUserModeAddress; + ULONG MaximumUserModeAddress; + KAFFINITY ActiveProcessorsAffinityMask; + CCHAR NumberOfProcessors; } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; // SystemProcessorInformation (1) typedef struct _SYSTEM_PROCESSOR_INFORMATION { - USHORT KeProcessorArchitecture; - USHORT KeProcessorLevel; - USHORT KeProcessorRevision; - USHORT AlwaysZero; - DWORD KeFeatureBits; - + USHORT ProcessorArchitecture; + USHORT ProcessorLevel; + USHORT ProcessorRevision; + USHORT Reserved; + ULONG ProcessorFeatureBits; } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; // SystemPerformanceInfo (2) typedef -struct _SYSTEM_PERFORMANCE_INFO +struct _SYSTEM_PERFORMANCE_INFORMATION { - LARGE_INTEGER TotalProcessorTime; + LARGE_INTEGER IdleProcessorTime; LARGE_INTEGER IoReadTransferCount; LARGE_INTEGER IoWriteTransferCount; LARGE_INTEGER IoOtherTransferCount; ULONG IoReadOperationCount; ULONG IoWriteOperationCount; ULONG IoOtherOperationCount; - ULONG MmAvailablePages; - ULONG MmTotalCommitedPages; - ULONG MmTotalCommitLimit; - ULONG MmPeakLimit; - ULONG PageFaults; - ULONG WriteCopies; - ULONG TransitionFaults; - ULONG Unknown1; - ULONG DemandZeroFaults; - ULONG PagesInput; - ULONG PagesRead; - ULONG Unknown2; - ULONG Unknown3; - ULONG PagesOutput; - ULONG PageWrites; - ULONG Unknown4; - ULONG Unknown5; - ULONG PoolPagedBytes; - ULONG PoolNonPagedBytes; + ULONG AvailablePages; + ULONG CommitedPages; + ULONG CommitLimit; + ULONG PeakCommitment; + ULONG PageFaultCount; + ULONG CopyOnWriteCount; + ULONG TransitionCount; + ULONG CacheTransitionCount; + ULONG DemandZeroCount; + ULONG PageReadCount; + ULONG PageReadIoCount; + ULONG CacheReadCount; + ULONG CacheIoCount; + ULONG DirtyPagesWriteCount; + ULONG DirtyWriteIoCount; + ULONG MappedPagesWriteCount; + ULONG MappedWriteIoCount; + ULONG PagedPoolPages; + ULONG NonPagedPoolPages; ULONG Unknown6; ULONG Unknown7; ULONG Unknown8; @@ -278,17 +276,16 @@ struct _SYSTEM_PERFORMANCE_INFO } SYSTEM_PERFORMANCE_INFO, *PSYSTEM_PERFORMANCE_INFO; -// SystemTimeInformation (3) +// SystemTimeOfDayInformation (3) typedef -struct _SYSTEM_TIME_INFORMATION +struct _SYSTEM_TIMEOFDAY_INFORMATION { - TIME KeBootTime; - TIME KeSystemTime; - TIME ExpTimeZoneBias; - ULONG ExpTimeZoneId; - ULONG Unused; - -} SYSTEM_TIME_INFORMATION, *PSYSTEM_TIME_INFORMATION; + LARGE_INTEGER BootTime; + LARGE_INTEGER CurrentTime; + LARGE_INTEGER TimeZoneBias; + ULONG TimeZoneId; + ULONG Reserved; +} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; // SystemPathInformation (4) // IT DOES NOT WORK @@ -299,7 +296,7 @@ struct _SYSTEM_PATH_INFORMATION } SYSTEM_PATH_INFORMATION, * PSYSTEM_PATH_INFORMATION; -// SystemProcessThreadInfo (5) +// SystemProcessInformation (5) typedef struct _SYSTEM_THREAD_INFORMATION { @@ -348,7 +345,7 @@ struct SYSTEM_PROCESS_INFORMATION } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; -// SystemServiceDescriptorTableInfo (6) +// SystemCallCountInformation (6) typedef struct _SYSTEM_SDT_INFORMATION { @@ -359,20 +356,19 @@ struct _SYSTEM_SDT_INFORMATION } SYSTEM_SDT_INFORMATION, *PSYSTEM_SDT_INFORMATION; -// SystemIoConfigInformation (7) +// SystemDeviceInformation (7) typedef -struct _SYSTEM_IOCONFIG_INFORMATION +struct _SYSTEM_DEVICE_INFORMATION { - ULONG DiskCount; - ULONG FloppyCount; - ULONG CdRomCount; - ULONG TapeCount; - ULONG SerialCount; - ULONG ParallelCount; - -} SYSTEM_IOCONFIG_INFORMATION, *PSYSTEM_IOCONFIG_INFORMATION; + ULONG NumberOfDisks; + ULONG NumberOfFloppies; + ULONG NumberOfCdRoms; + ULONG NumberOfTapes; + ULONG NumberOfSerialPorts; + ULONG NumberOfParallelPorts; +} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION; -// SystemProcessorTimeInformation (8) +// SystemProcessorPerformanceInformation (8) typedef struct _SYSTEM_PROCESSORTIME_INFO { @@ -383,18 +379,18 @@ struct _SYSTEM_PROCESSORTIME_INFO TIME TotalInterruptTime; ULONG TotalInterrupts; ULONG Unused; - + } SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO; -// SystemNtGlobalFlagInformation (9) +// SystemFlagsInformation (9) typedef -struct _SYSTEM_GLOBAL_FLAG_INFO +struct _SYSTEM_FLAGS_INFORMATION { - ULONG NtGlobalFlag; + ULONG Flags; -} SYSTEM_GLOBAL_FLAG_INFO, * PSYSTEM_GLOBAL_FLAG_INFO; +} SYSTEM_FLAGS_INFORMATION, * PSYSTEM_FLAGS_INFORMATION; -// SystemInformation10 (10) +// SystemCallTimeInformation (10) // UNKNOWN // SystemModuleInformation (11) @@ -421,7 +417,7 @@ struct _SYSTEM_MODULE_INFORMATION } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; -// SystemResourceLockInformation (12) +// SystemLocksInformation (12) typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY { diff --git a/reactos/lib/kernel32/misc/sysinfo.c b/reactos/lib/kernel32/misc/sysinfo.c index 22cc5246e0b..755abca3807 100644 --- a/reactos/lib/kernel32/misc/sysinfo.c +++ b/reactos/lib/kernel32/misc/sysinfo.c @@ -1,4 +1,4 @@ -/* $Id: sysinfo.c,v 1.1 2000/04/25 23:22:54 ea Exp $ +/* $Id: sysinfo.c,v 1.2 2000/11/04 13:52:12 ekohl Exp $ * * reactos/lib/kernel32/misc/sysinfo.c * @@ -52,14 +52,14 @@ GetSystemInfo ( * PROCESSOR_ARCHITECTURE_PPC 3 * PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF */ - Si->u.s.wProcessorArchitecture = Spi.KeProcessorArchitecture; + Si->u.s.wProcessorArchitecture = Spi.ProcessorArchitecture; /* For future use: always zero */ Si->u.s.wReserved = 0; - Si->dwPageSize = Sbi.MmPageSize; - Si->lpMinimumApplicationAddress = Sbi.MmLowestUserAddress; - Si->lpMaximumApplicationAddress = Sbi.MmHighestUserAddress; - Si->dwActiveProcessorMask = Sbi.KeActiveProcessors; - Si->dwNumberOfProcessors = Sbi.KeNumberProcessors; + Si->dwPageSize = Sbi.PageSize; + Si->lpMinimumApplicationAddress = (PVOID)Sbi.MinimumUserModeAddress; + Si->lpMaximumApplicationAddress = (PVOID)Sbi.MaximumUserModeAddress; + Si->dwActiveProcessorMask = Sbi.ActiveProcessorsAffinityMask; + Si->dwNumberOfProcessors = Sbi.NumberOfProcessors; /* * Compatibility: * PROCESSOR_INTEL_386 386 @@ -69,7 +69,7 @@ GetSystemInfo ( * PROCESSOR_ALPHA_21064 21064 */ #if 0 - switch (Spi.KeProcessorArchitecture) + switch (Spi.ProcessorArchitecture) { case : #endif @@ -78,8 +78,8 @@ GetSystemInfo ( break; } #endif - Si->dwAllocationGranularity = 65536; /* hard coded on Intel? */ - Si->wProcessorRevision = Spi.KeProcessorRevision; + Si->dwAllocationGranularity = Sbi.AllocationGranularity; + Si->wProcessorRevision = Spi.ProcessorRevision; /* * Get the version of Windows on which * the process expects to run. diff --git a/reactos/lib/ntdll/rtl/time.c b/reactos/lib/ntdll/rtl/time.c index da0bc1323e9..baca0533378 100644 --- a/reactos/lib/ntdll/rtl/time.c +++ b/reactos/lib/ntdll/rtl/time.c @@ -1,4 +1,4 @@ -/* $Id: time.c,v 1.7 2000/06/29 23:35:32 dwelch Exp $ +/* $Id: time.c,v 1.8 2000/11/04 13:51:41 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -274,18 +274,18 @@ RtlLocalTimeToSystemTime ( PLARGE_INTEGER SystemTime ) { - SYSTEM_TIME_INFORMATION TimeInformation; + SYSTEM_TIMEOFDAY_INFORMATION TimeInformation; NTSTATUS Status; - Status = NtQuerySystemInformation (SystemTimeInformation, + Status = NtQuerySystemInformation (SystemTimeOfDayInformation, &TimeInformation, - sizeof(SYSTEM_TIME_INFORMATION), + sizeof(SYSTEM_TIMEOFDAY_INFORMATION), NULL); if (!NT_SUCCESS(Status)) return Status; SystemTime->QuadPart = LocalTime->QuadPart + - TimeInformation.ExpTimeZoneBias.QuadPart; + TimeInformation.TimeZoneBias.QuadPart; return STATUS_SUCCESS; } @@ -298,18 +298,18 @@ RtlSystemTimeToLocalTime ( PLARGE_INTEGER LocalTime ) { - SYSTEM_TIME_INFORMATION TimeInformation; + SYSTEM_TIMEOFDAY_INFORMATION TimeInformation; NTSTATUS Status; - Status = NtQuerySystemInformation (SystemTimeInformation, + Status = NtQuerySystemInformation (SystemTimeOfDayInformation, &TimeInformation, - sizeof(SYSTEM_TIME_INFORMATION), + sizeof(SYSTEM_TIMEOFDAY_INFORMATION), NULL); if (!NT_SUCCESS(Status)) return Status; LocalTime->QuadPart = SystemTime->QuadPart - - TimeInformation.ExpTimeZoneBias.QuadPart; + TimeInformation.TimeZoneBias.QuadPart; return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/ex/sysinfo.c b/reactos/ntoskrnl/ex/sysinfo.c index 903c24512c1..3942f0d2fef 100644 --- a/reactos/ntoskrnl/ex/sysinfo.c +++ b/reactos/ntoskrnl/ex/sysinfo.c @@ -1,4 +1,4 @@ -/* $Id: sysinfo.c,v 1.7 2000/10/22 16:36:49 ekohl Exp $ +/* $Id: sysinfo.c,v 1.8 2000/11/04 13:51:03 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -75,17 +75,17 @@ QSI_DEF(SystemBasicInformation) return (STATUS_INFO_LENGTH_MISMATCH); } - Sbi->AlwaysZero = 0; - Sbi->KeMaximumIncrement = 0; /* FIXME */ - Sbi->MmPageSize = PAGESIZE; /* FIXME: it should be PAGE_SIZE */ - Sbi->MmNumberOfPhysicalPages = 0; /* FIXME */ - Sbi->MmLowestPhysicalPage = 0; /* FIXME */ - Sbi->MmHighestPhysicalPage = 0; /* FIXME */ - Sbi->MmLowestUserAddress = 0; /* FIXME */ - Sbi->MmLowestUserAddress1 = 0; /* FIXME */ - Sbi->MmHighestUserAddress = 0; /* FIXME */ - Sbi->KeActiveProcessors = 0x00000001; /* FIXME */ - Sbi->KeNumberProcessors = 1; /* FIXME */ + Sbi->Reserved = 0; + Sbi->TimerResolution = 0; /* FIXME */ + Sbi->PageSize = PAGESIZE; /* FIXME: it should be PAGE_SIZE */ + Sbi->NumberOfPhysicalPages = 0; /* FIXME */ + Sbi->LowestPhysicalPageNumber = 0; /* FIXME */ + Sbi->HighestPhysicalPageNumber = 0; /* FIXME */ + Sbi->AllocationGranularity = 65536; /* hard coded on Intel? */ + Sbi->MinimumUserModeAddress = 0; /* FIXME */ + Sbi->MaximumUserModeAddress = 0; /* FIXME */ + Sbi->ActiveProcessorsAffinityMask = 0x00000001; /* FIXME */ + Sbi->NumberOfProcessors = 1; /* FIXME */ return (STATUS_SUCCESS); } @@ -106,17 +106,17 @@ QSI_DEF(SystemProcessorInformation) } /* FIXME: add CPU type detection code */ - Spi->KeProcessorArchitecture = 0; /* FIXME */ - Spi->KeProcessorLevel = 0; /* FIXME */ - Spi->KeProcessorRevision = 0; /* FIXME */ - Spi->AlwaysZero = 0; - Spi->KeFeatureBits = 0x00000000; /* FIXME */ + Spi->ProcessorArchitecture = 0; /* FIXME */ + Spi->ProcessorLevel = 0; /* FIXME */ + Spi->ProcessorRevision = 0; /* FIXME */ + Spi->Reserved = 0; + Spi->ProcessorFeatureBits = 0x00000000; /* FIXME */ return (STATUS_SUCCESS); } /* Class 2 - Performance Information */ -QSI_DEF(SystemPerformanceInfo) +QSI_DEF(SystemPerformanceInformation) { PSYSTEM_PERFORMANCE_INFO Spi = (PSYSTEM_PERFORMANCE_INFO) Buffer; @@ -130,32 +130,32 @@ QSI_DEF(SystemPerformanceInfo) return (STATUS_INFO_LENGTH_MISMATCH); } - Spi->TotalProcessorTime.QuadPart = 0; /* FIXME */ + Spi->IdleProcessorTime.QuadPart = 0; /* FIXME */ Spi->IoReadTransferCount.QuadPart = 0; /* FIXME */ Spi->IoWriteTransferCount.QuadPart = 0; /* FIXME */ Spi->IoOtherTransferCount.QuadPart = 0; /* FIXME */ Spi->IoReadOperationCount = 0; /* FIXME */ Spi->IoWriteOperationCount = 0; /* FIXME */ Spi->IoOtherOperationCount = 0; /* FIXME */ - Spi->MmAvailablePages = 0; /* FIXME */ - Spi->MmTotalCommitedPages = 0; /* FIXME */ - Spi->MmTotalCommitLimit = 0; /* FIXME */ - Spi->MmPeakLimit = 0; /* FIXME */ - Spi->PageFaults = 0; /* FIXME */ - Spi->WriteCopies = 0; /* FIXME */ - Spi->TransitionFaults = 0; /* FIXME */ - Spi->Unknown1 = 0; /* FIXME */ - Spi->DemandZeroFaults = 0; /* FIXME */ - Spi->PagesInput = 0; /* FIXME */ - Spi->PagesRead = 0; /* FIXME */ - Spi->Unknown2 = 0; /* FIXME */ - Spi->Unknown3 = 0; /* FIXME */ - Spi->PagesOutput = 0; /* FIXME */ - Spi->PageWrites = 0; /* FIXME */ - Spi->Unknown4 = 0; /* FIXME */ - Spi->Unknown5 = 0; /* FIXME */ - Spi->PoolPagedBytes = 0; /* FIXME */ - Spi->PoolNonPagedBytes = 0; /* FIXME */ + Spi->AvailablePages = 0; /* FIXME */ + Spi->CommitedPages = 0; /* FIXME */ + Spi->CommitLimit = 0; /* FIXME */ + Spi->PeakCommitment = 0; /* FIXME */ + Spi->PageFaultCount = 0; /* FIXME */ + Spi->CopyOnWriteCount = 0; /* FIXME */ + Spi->TransitionCount = 0; /* FIXME */ + Spi->CacheTransitionCount = 0; /* FIXME */ + Spi->DemandZeroCount = 0; /* FIXME */ + Spi->PageReadCount = 0; /* FIXME */ + Spi->PageReadIoCount = 0; /* FIXME */ + Spi->CacheReadCount = 0; /* FIXME */ + Spi->CacheIoCount = 0; /* FIXME */ + Spi->DirtyPagesWriteCount = 0; /* FIXME */ + Spi->DirtyWriteIoCount = 0; /* FIXME */ + Spi->MappedPagesWriteCount = 0; /* FIXME */ + Spi->MappedWriteIoCount = 0; /* FIXME */ + Spi->PagedPoolPages = 0; /* FIXME */ + Spi->NonPagedPoolPages = 0; /* FIXME */ Spi->Unknown6 = 0; /* FIXME */ Spi->Unknown7 = 0; /* FIXME */ Spi->Unknown8 = 0; /* FIXME */ @@ -208,26 +208,26 @@ QSI_DEF(SystemPerformanceInfo) return (STATUS_SUCCESS); } -/* Class 3 - Time Information */ -QSI_DEF(SystemTimeInformation) +/* Class 3 - Time Of Day Information */ +QSI_DEF(SystemTimeOfDayInformation) { - PSYSTEM_TIME_INFORMATION Sti - = (PSYSTEM_TIME_INFORMATION) Buffer; + PSYSTEM_TIMEOFDAY_INFORMATION Sti + = (PSYSTEM_TIMEOFDAY_INFORMATION) Buffer; - *ReqSize = sizeof (SYSTEM_TIME_INFORMATION); + *ReqSize = sizeof (SYSTEM_TIMEOFDAY_INFORMATION); /* * Check user buffer's size */ - if (Size < sizeof (SYSTEM_TIME_INFORMATION)) + if (Size < sizeof (SYSTEM_TIMEOFDAY_INFORMATION)) { return (STATUS_INFO_LENGTH_MISMATCH); } - Sti->KeBootTime.QuadPart = 0; /* FIXME */ - Sti->KeSystemTime.QuadPart = 0; /* FIXME */ - Sti->ExpTimeZoneBias.QuadPart = 0; /* FIXME */ - Sti->ExpTimeZoneId = 0; /* FIXME */ - Sti->Unused = 0; /* FIXME */ + Sti->BootTime.QuadPart = 0; /* FIXME */ + Sti->CurrentTime.QuadPart = 0; /* FIXME */ + Sti->TimeZoneBias.QuadPart = 0; /* FIXME */ + Sti->TimeZoneId = 0; /* FIXME */ + Sti->Reserved = 0; /* FIXME */ return (STATUS_SUCCESS); } @@ -246,93 +246,111 @@ QSI_DEF(SystemProcessInformation) return (STATUS_NOT_IMPLEMENTED); } -/* Class 6 - SDT Information */ -QSI_DEF(SystemServiceDescriptorTableInfo) +/* Class 6 - Call Count Information */ +QSI_DEF(SystemCallCountInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 7 - I/O Configuration Information */ -QSI_DEF(SystemIoConfigInfo) +/* Class 7 - Device Information */ +QSI_DEF(SystemDeviceInformation) { - /* FIXME */ - return (STATUS_NOT_IMPLEMENTED); -} + PSYSTEM_DEVICE_INFORMATION Sdi + = (PSYSTEM_DEVICE_INFORMATION) Buffer; -/* Class 8 - Processor Time Information */ -QSI_DEF(SystemProcessorTimeInfo) -{ - /* FIXME */ - return (STATUS_NOT_IMPLEMENTED); -} - -/* Class 9 - Global Flag Information */ -QSI_DEF(SystemNtGlobalFlagInformation) -{ - if (sizeof (SYSTEM_GLOBAL_FLAG_INFO) != Size) - { - * ReqSize = sizeof (SYSTEM_GLOBAL_FLAG_INFO); - return (STATUS_INFO_LENGTH_MISMATCH); - } - ((PSYSTEM_GLOBAL_FLAG_INFO) Buffer)->NtGlobalFlag = NtGlobalFlag; - return (STATUS_SUCCESS); -} - -SSI_DEF(SystemNtGlobalFlagInformation) -{ - if (sizeof (SYSTEM_GLOBAL_FLAG_INFO) != Size) + *ReqSize = sizeof (SYSTEM_DEVICE_INFORMATION); + /* + * Check user buffer's size + */ + if (Size < sizeof (SYSTEM_DEVICE_INFORMATION)) { return (STATUS_INFO_LENGTH_MISMATCH); } - NtGlobalFlag = ((PSYSTEM_GLOBAL_FLAG_INFO) Buffer)->NtGlobalFlag; + + Sdi->NumberOfDisks = 0; /* FIXME */ + Sdi->NumberOfFloppies = 0; /* FIXME */ + Sdi->NumberOfCdRoms = 0; /* FIXME */ + Sdi->NumberOfTapes = 0; /* FIXME */ + Sdi->NumberOfSerialPorts = 0; /* FIXME */ + Sdi->NumberOfParallelPorts = 0; /* FIXME */ + return (STATUS_SUCCESS); } -/* Class 10 - ? Information */ -QSI_DEF(SystemInformation10) +/* Class 8 - Processor Performance Information */ +QSI_DEF(SystemProcessorPerformanceInformation) +{ + /* FIXME */ + return (STATUS_NOT_IMPLEMENTED); +} + +/* Class 9 - Flags Information */ +QSI_DEF(SystemFlagsInformation) +{ + if (sizeof (SYSTEM_FLAGS_INFORMATION) != Size) + { + * ReqSize = sizeof (SYSTEM_FLAGS_INFORMATION); + return (STATUS_INFO_LENGTH_MISMATCH); + } + ((PSYSTEM_FLAGS_INFORMATION) Buffer)->Flags = NtGlobalFlag; + return (STATUS_SUCCESS); +} + +SSI_DEF(SystemFlagsInformation) +{ + if (sizeof (SYSTEM_FLAGS_INFORMATION) != Size) + { + return (STATUS_INFO_LENGTH_MISMATCH); + } + NtGlobalFlag = ((PSYSTEM_FLAGS_INFORMATION) Buffer)->Flags; + return (STATUS_SUCCESS); +} + +/* Class 10 - Call Time Information */ +QSI_DEF(SystemCallTimeInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } /* Class 11 - Modules Information */ -QSI_DEF(SystemModuleInfo) +QSI_DEF(SystemModuleInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 12 - Resource Lock Information */ -QSI_DEF(SystemResourceLockInfo) +/* Class 12 - Locks Information */ +QSI_DEF(SystemLocksInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 13 - ? Information */ -QSI_DEF(SystemInformation13) +/* Class 13 - Stack Trace Information */ +QSI_DEF(SystemStackTraceInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 14 - ? Information */ -QSI_DEF(SystemInformation14) +/* Class 14 - Paged Pool Information */ +QSI_DEF(SystemPagedPoolInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 15 - ? Information */ -QSI_DEF(SystemInformation15) +/* Class 15 - Non Paged Pool Information */ +QSI_DEF(SystemNonPagedPoolInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } /* Class 16 - Handle Information */ -QSI_DEF(SystemHandleInfo) +QSI_DEF(SystemHandleInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); @@ -352,22 +370,22 @@ QSI_DEF(SystemPageFileInformation) return (STATUS_NOT_IMPLEMENTED); } -/* Class 19 - Information */ -QSI_DEF(SystemInstructionEmulationInfo) +/* Class 19 - Vdm Instemul Information */ +QSI_DEF(SystemVdmInstemulInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 20 - ? Information */ -QSI_DEF(SystemInformation20) +/* Class 20 - Vdm Bop Information */ +QSI_DEF(SystemVdmBopInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 21 - Information */ -QSI_DEF(SystemCacheInformation) +/* Class 21 - File Cache Information */ +QSI_DEF(SystemFileCacheInformation) { if (Size < sizeof (SYSTEM_CACHE_INFORMATION)) { @@ -378,7 +396,7 @@ QSI_DEF(SystemCacheInformation) return (STATUS_NOT_IMPLEMENTED); } -SSI_DEF(SystemCacheInformation) +SSI_DEF(SystemFileCacheInformation) { if (Size < sizeof (SYSTEM_CACHE_INFORMATION)) { @@ -395,28 +413,28 @@ QSI_DEF(SystemPoolTagInformation) return (STATUS_NOT_IMPLEMENTED); } -/* Class 23 - Processor Schedule Information */ -QSI_DEF(SystemProcessorScheduleInfo) +/* Class 23 - Interrupt Information */ +QSI_DEF(SystemInterruptInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 24 - DPC Information */ -QSI_DEF(SystemDpcInformation) +/* Class 24 - DPC Behaviour Information */ +QSI_DEF(SystemDpcBehaviourInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -SSI_DEF(SystemDpcInformation) +SSI_DEF(SystemDpcBehaviourInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 25 - ? Information */ -QSI_DEF(SystemInformation25) +/* Class 25 - Full Memory Information */ +QSI_DEF(SystemFullMemoryInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); @@ -447,7 +465,7 @@ SSI_DEF(SystemUnloadGdiDriverInformation) return (STATUS_NOT_IMPLEMENTED); } -/* Class 28 - Information */ +/* Class 28 - Time Adjustment Information */ QSI_DEF(SystemTimeAdjustmentInformation) { if (sizeof (SYSTEM_TIME_ADJUSTMENT_INFO) > Size) @@ -469,119 +487,119 @@ SSI_DEF(SystemTimeAdjustmentInformation) return (STATUS_NOT_IMPLEMENTED); } -/* Class 29 - ? Information */ -QSI_DEF(SystemInformation29) +/* Class 29 - Summary Memory Information */ +QSI_DEF(SystemSummaryMemoryInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 30 - ? Information */ -QSI_DEF(SystemInformation30) +/* Class 30 - Next Event Id Information */ +QSI_DEF(SystemNextEventIdInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 31 - ? Information */ -QSI_DEF(SystemInformation31) +/* Class 31 - Event Ids Information */ +QSI_DEF(SystemEventIdsInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } /* Class 32 - Crach Dump Information */ -QSI_DEF(SystemCrashDumpSectionInfo) +QSI_DEF(SystemCrashDumpInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 33 - Processor Fault Information */ -QSI_DEF(SystemProcessorFaultCountInfo) +/* Class 33 - Exception Information */ +QSI_DEF(SystemExceptionInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } /* Class 34 - Crach Dump State Information */ -QSI_DEF(SystemCrashDumpStateInfo) +QSI_DEF(SystemCrashDumpStateInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 35 - Debugger Information */ -QSI_DEF(SystemDebuggerInfo) +/* Class 35 - Kernel Debugger Information */ +QSI_DEF(SystemKernelDebuggerInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 36 - Thread Switch Counters Information */ -QSI_DEF(SystemThreadSwitchCountersInfo) +/* Class 36 - Context Switch Information */ +QSI_DEF(SystemContextSwitchInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 37 - Quota Information */ -QSI_DEF(SystemQuotaInformation) +/* Class 37 - Registry Quota Information */ +QSI_DEF(SystemRegistryQuotaInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -SSI_DEF(SystemQuotaInformation) +SSI_DEF(SystemRegistryQuotaInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 38 - Load Driver Information */ -SSI_DEF(SystemLoadDriverInfo) +/* Class 38 - Extend Service Table Information */ +SSI_DEF(SystemExtendServiceTableInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 39 - Priority Separation Information */ -SSI_DEF(SystemPrioritySeparationInfo) +/* Class 39 - Priority Seperation */ +SSI_DEF(SystemPrioritySeperation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 40 - ? Information */ -QSI_DEF(SystemInformation40) +/* Class 40 - Plug Play Bus Information */ +QSI_DEF(SystemPlugPlayBusInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 41 - ? Information */ -QSI_DEF(SystemInformation41) +/* Class 41 - Dock Information */ +QSI_DEF(SystemDockInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 42 - ? Information */ -QSI_DEF(SystemInformation42) +/* Class 42 - Power Information */ +QSI_DEF(SystemPowerInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 43 - ? Information */ -QSI_DEF(SystemInformation43) +/* Class 43 - Processor Speed Information */ +QSI_DEF(SystemProcessorSpeedInformation) { /* FIXME */ return (STATUS_NOT_IMPLEMENTED); } -/* Class 44 - Information */ -QSI_DEF(SystemTimeZoneInformation) +/* Class 44 - Current Time Zone Information */ +QSI_DEF(SystemCurrentTimeZoneInformation) { * ReqSize = sizeof (TIME_ZONE_INFORMATION); @@ -600,7 +618,7 @@ QSI_DEF(SystemTimeZoneInformation) } -SSI_DEF(SystemTimeZoneInformation) +SSI_DEF(SystemCurrentTimeZoneInformation) { /* * Check user buffer's size @@ -619,7 +637,7 @@ SSI_DEF(SystemTimeZoneInformation) } -/* Class 45 - Information */ +/* Class 45 - Lookaside Information */ QSI_DEF(SystemLookasideInformation) { /* FIXME */ @@ -652,49 +670,49 @@ CallQS [] = { SI_QX(SystemBasicInformation), SI_QX(SystemProcessorInformation), - SI_QX(SystemPerformanceInfo), - SI_QX(SystemTimeInformation), + SI_QX(SystemPerformanceInformation), + SI_QX(SystemTimeOfDayInformation), SI_QX(SystemPathInformation), /* should be SI_XX */ SI_QX(SystemProcessInformation), - SI_QX(SystemServiceDescriptorTableInfo), - SI_QX(SystemIoConfigInfo), - SI_QX(SystemProcessorTimeInfo), - SI_QS(SystemNtGlobalFlagInformation), - SI_QX(SystemInformation10), /* should be SI_XX */ - SI_QX(SystemModuleInfo), - SI_QX(SystemResourceLockInfo), - SI_QX(SystemInformation13), /* should be SI_XX */ - SI_QX(SystemInformation14), /* should be SI_XX */ - SI_QX(SystemInformation15), /* should be SI_XX */ - SI_QX(SystemHandleInfo), + SI_QX(SystemCallCountInformation), + SI_QX(SystemDeviceInformation), + SI_QX(SystemProcessorPerformanceInformation), + SI_QS(SystemFlagsInformation), + SI_QX(SystemCallTimeInformation), /* should be SI_XX */ + SI_QX(SystemModuleInformation), + SI_QX(SystemLocksInformation), + SI_QX(SystemStackTraceInformation), /* should be SI_XX */ + SI_QX(SystemPagedPoolInformation), /* should be SI_XX */ + SI_QX(SystemNonPagedPoolInformation), /* should be SI_XX */ + SI_QX(SystemHandleInformation), SI_QX(SystemObjectInformation), SI_QX(SystemPageFileInformation), - SI_QX(SystemInstructionEmulationInfo), - SI_QX(SystemInformation20), /* it should be SI_XX */ - SI_QS(SystemCacheInformation), + SI_QX(SystemVdmInstemulInformation), + SI_QX(SystemVdmBopInformation), /* it should be SI_XX */ + SI_QS(SystemFileCacheInformation), SI_QX(SystemPoolTagInformation), - SI_QX(SystemProcessorScheduleInfo), - SI_QS(SystemDpcInformation), - SI_QX(SystemInformation25), /* it should be SI_XX */ + SI_QX(SystemInterruptInformation), + SI_QS(SystemDpcBehaviourInformation), + SI_QX(SystemFullMemoryInformation), /* it should be SI_XX */ SI_XS(SystemLoadGdiDriverInformation), SI_XS(SystemUnloadGdiDriverInformation), SI_QS(SystemTimeAdjustmentInformation), - SI_QX(SystemInformation29), /* it should be SI_XX */ - SI_QX(SystemInformation30), /* it should be SI_XX */ - SI_QX(SystemInformation31), /* it should be SI_XX */ - SI_QX(SystemCrashDumpSectionInfo), - SI_QX(SystemProcessorFaultCountInfo), - SI_QX(SystemCrashDumpStateInfo), - SI_QX(SystemDebuggerInfo), - SI_QX(SystemThreadSwitchCountersInfo), - SI_QS(SystemQuotaInformation), - SI_XS(SystemLoadDriverInfo), - SI_XS(SystemPrioritySeparationInfo), - SI_QX(SystemInformation40), /* it should be SI_XX */ - SI_QX(SystemInformation41), /* it should be SI_XX */ - SI_QX(SystemInformation42), /* it should be SI_XX */ - SI_QX(SystemInformation43), /* it should be SI_XX */ - SI_QS(SystemTimeZoneInformation), /* it should be SI_QX */ + SI_QX(SystemSummaryMemoryInformation), /* it should be SI_XX */ + SI_QX(SystemNextEventIdInformation), /* it should be SI_XX */ + SI_QX(SystemEventIdsInformation), /* it should be SI_XX */ + SI_QX(SystemCrashDumpInformation), + SI_QX(SystemExceptionInformation), + SI_QX(SystemCrashDumpStateInformation), + SI_QX(SystemKernelDebuggerInformation), + SI_QX(SystemContextSwitchInformation), + SI_QS(SystemRegistryQuotaInformation), + SI_XS(SystemExtendServiceTableInformation), + SI_XS(SystemPrioritySeperation), + SI_QX(SystemPlugPlayBusInformation), /* it should be SI_XX */ + SI_QX(SystemDockInformation), /* it should be SI_XX */ + SI_QX(SystemPowerInformation), /* it should be SI_XX */ + SI_QX(SystemProcessorSpeedInformation), /* it should be SI_XX */ + SI_QS(SystemCurrentTimeZoneInformation), /* it should be SI_QX */ SI_QX(SystemLookasideInformation) };