mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
Partially implemented (handlers only)
NTOSKRNL.NtQuerySystemInformation() and NTOSKRNL.NtSetSystemInformation(). --- Partially implemented (kernel32/process/proc.c) KERNEL32.GetPriorityClass(), KERNEL32.SetPriorityClass() and NTDLL.CsrSetPriorityClass() (stub only). Renamed (in include/csrss/csrss.h) priority class macros: #define CSR_PRIORITY_CLASS_NORMAL (0x10) #define CSR_PRIORITY_CLASS_IDLE (0x20) #define CSR_PRIORITY_CLASS_HIGH (0x40) #define CSR_PRIORITY_CLASS_REALTIME (0x80) --- Implemented (kernel32/misc/error.c) #include <kernel32/error.h> DWORD STDCALL SetLastErrorByStatus ( NTSTATUS Status ); to replace SetLastError(RtlNtStatusToDosError(Status)) in KERNEL32, and fixed KERNEL32.SetLastError() KERNEL32.GetLastError() to use the field in NT_TEB (LastError is per thread not per process). --- Implemented (lib/kernel32/sysinfo.c) GetSystemInfo() (to be completed). --- Fixed rosapps/sysutils/makefile to use ROS import libraries. --- Added QSI to the system utilities set. The target is writing a tool that can be used to query as much system information as possible from user mode (to be finished and tested only under nt4sp4/x86; it was NOT tested under ROS: it crashes immediately and needs NtQuerySystemInformation implemented!). svn path=/trunk/; revision=1137
This commit is contained in:
parent
0c4a5f1e06
commit
b3ea65f0e4
26 changed files with 4278 additions and 462 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: conport.c,v 1.5 1999/07/17 23:10:12 ea Exp $
|
/* $Id: conport.c,v 1.6 2000/04/25 23:22:46 ea Exp $
|
||||||
*
|
*
|
||||||
* reactos/apps/lpc/conport.c
|
* reactos/apps/lpc/conport.c
|
||||||
*
|
*
|
||||||
|
@ -107,14 +107,14 @@ TryConnectPort(char *port_name)
|
||||||
*/
|
*/
|
||||||
Port = 0;
|
Port = 0;
|
||||||
Status = ConnectPort(
|
Status = ConnectPort(
|
||||||
& Port,
|
& Port, /* & PortHandle */
|
||||||
& PortName,
|
& PortName, /* & PortName */
|
||||||
& ObjectAttributes,
|
& ObjectAttributes, /* & PortAttributes */
|
||||||
0,
|
NULL, /* & SecurityQos */
|
||||||
0,
|
NULL, /* & SectionInfo */
|
||||||
0,
|
NULL, /* & MapInfo */
|
||||||
0,
|
NULL, /* & MaxMessageSize */
|
||||||
LPC_CONNECT_FLAG5
|
LPC_CONNECT_FLAG5 /* & ConnectInfoLength */
|
||||||
);
|
);
|
||||||
if (Status == STATUS_SUCCESS)
|
if (Status == STATUS_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,12 @@
|
||||||
|
|
||||||
#include <napi/lpc.h>
|
#include <napi/lpc.h>
|
||||||
|
|
||||||
|
#define CSR_PRIORITY_CLASS_NORMAL (0x10)
|
||||||
|
#define CSR_PRIORITY_CLASS_IDLE (0x20)
|
||||||
|
#define CSR_PRIORITY_CLASS_HIGH (0x40)
|
||||||
|
#define CSR_PRIORITY_CLASS_REALTIME (0x80)
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
} CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
|
} CSRSS_CONNECT_PROCESS_REQUEST, PCSRSS_CONNECT_PROCESS_REQUEST;
|
||||||
|
|
|
@ -243,4 +243,20 @@ enum
|
||||||
#define FIRST_DEVICE_SPECIFIC_LEVEL (4)
|
#define FIRST_DEVICE_SPECIFIC_LEVEL (4)
|
||||||
#define HIGH_LEVEL (FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS)
|
#define HIGH_LEVEL (FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS)
|
||||||
|
|
||||||
|
/* NT's IRQL */
|
||||||
|
#if 0
|
||||||
|
#define PASSIVE_LEVEL 0 // Passive release level
|
||||||
|
#define LOW_LEVEL 0 // Lowest interrupt level
|
||||||
|
#define APC_LEVEL 1 // APC interrupt level
|
||||||
|
#define DISPATCH_LEVEL 2 // Dispatcher level
|
||||||
|
|
||||||
|
#define PROFILE_LEVEL 27 // timer used for profiling.
|
||||||
|
#define CLOCK1_LEVEL 28 // Interval clock 1 level - Not used on x86
|
||||||
|
#define CLOCK2_LEVEL 28 // Interval clock 2 level
|
||||||
|
#define IPI_LEVEL 29 // Interprocessor interrupt level
|
||||||
|
#define POWER_LEVEL 30 // Power failure level
|
||||||
|
#define HIGH_LEVEL 31 // Highest interrupt level
|
||||||
|
#define SYNCH_LEVEL (IPI_LEVEL-1) // synchronization level
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* ndef _DDK_DEFINES_H */
|
#endif /* ndef _DDK_DEFINES_H */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
/* $Id: zw.h,v 1.28 2000/04/03 21:54:34 dwelch Exp $
|
/* $Id: zw.h,v 1.29 2000/04/25 23:22:49 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -3379,7 +3379,7 @@ ZwQuerySystemEnvironmentValue(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtQuerySystemInformation(
|
NtQuerySystemInformation(
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
OUT PVOID SystemInformation,
|
OUT PVOID SystemInformation,
|
||||||
IN ULONG Length,
|
IN ULONG Length,
|
||||||
OUT PULONG ResultLength
|
OUT PULONG ResultLength
|
||||||
|
@ -3388,7 +3388,7 @@ NtQuerySystemInformation(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
ZwQuerySystemInformation(
|
ZwQuerySystemInformation(
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
OUT PVOID SystemInformation,
|
OUT PVOID SystemInformation,
|
||||||
IN ULONG Length,
|
IN ULONG Length,
|
||||||
OUT PULONG ResultLength
|
OUT PULONG ResultLength
|
||||||
|
@ -4450,7 +4450,7 @@ ZwSetSystemEnvironmentValue(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtSetSystemInformation(
|
NtSetSystemInformation(
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
IN PVOID SystemInformation,
|
IN PVOID SystemInformation,
|
||||||
IN ULONG SystemInformationLength
|
IN ULONG SystemInformationLength
|
||||||
);
|
);
|
||||||
|
@ -4458,7 +4458,7 @@ NtSetSystemInformation(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
ZwSetSystemInformation(
|
ZwSetSystemInformation(
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
IN PVOID SystemInformation,
|
IN PVOID SystemInformation,
|
||||||
IN ULONG SystemInformationLength
|
IN ULONG SystemInformationLength
|
||||||
);
|
);
|
||||||
|
|
|
@ -85,19 +85,590 @@
|
||||||
#define EventBasicInformation 0
|
#define EventBasicInformation 0
|
||||||
|
|
||||||
// system information
|
// system information
|
||||||
|
// {Nt|Zw}{Query|Set}SystemInformation
|
||||||
|
|
||||||
|
typedef
|
||||||
|
enum _SYSTEM_INFORMATION_CLASS
|
||||||
|
{
|
||||||
|
SystemInformationClassMin = 0,
|
||||||
|
SystemBasicInformation = 0, /* Q */
|
||||||
|
SystemProcessorInformation = 1, /* Q */
|
||||||
|
SystemPerformanceInformation = 2, /* Q */
|
||||||
|
SystemTimeInformation = 3, /* Q */
|
||||||
|
SystemPathInformation = 4,
|
||||||
|
SystemProcessInformation = 5, /* Q */
|
||||||
|
SystemServiceDescriptorTableInfo = 6, /* Q */
|
||||||
|
SystemIoConfigInformation = 7, /* Q */
|
||||||
|
SystemProcessorTimeInformation = 8, /* Q */
|
||||||
|
SystemNtGlobalFlagInformation = 9, /* QS */
|
||||||
|
SystemInformation10 = 10,
|
||||||
|
SystemModuleInformation = 11, /* Q */
|
||||||
|
SystemResourceLockInformation = 12, /* Q */
|
||||||
|
SystemInformation13 = 13,
|
||||||
|
SystemInformation14 = 14,
|
||||||
|
SystemInformation15 = 15,
|
||||||
|
SystemHandleInformation = 16, /* Q */
|
||||||
|
SystemObjectInformation = 17, /* Q */
|
||||||
|
SystemPageFileInformation = 18, /* Q */
|
||||||
|
SystemInstructionEmulationInfo = 19, /* Q */
|
||||||
|
SystemInformation20 = 20,
|
||||||
|
SystemCacheInformation = 21, /* QS */
|
||||||
|
SystemPoolTagInformation = 22, /* Q (checked build only) */
|
||||||
|
SystemProcessorScheduleInfo = 23, /* Q */
|
||||||
|
SystemDpcInformation = 24, /* QS */
|
||||||
|
SystemInformation25 = 25,
|
||||||
|
SystemLoadImage = 26, /* S (callable) */
|
||||||
|
SystemUnloadImage = 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 */
|
||||||
|
SystemLookasideInformation = 45, /* Q */
|
||||||
|
SystemInformationClassMax
|
||||||
|
|
||||||
|
} SYSTEM_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
// SystemBasicInformation (0)
|
||||||
|
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;
|
||||||
|
|
||||||
|
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
|
||||||
|
|
||||||
|
// SystemProcessorInformation (1)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PROCESSOR_INFORMATION
|
||||||
|
{
|
||||||
|
USHORT KeProcessorArchitecture;
|
||||||
|
USHORT KeProcessorLevel;
|
||||||
|
USHORT KeProcessorRevision;
|
||||||
|
USHORT AlwaysZero;
|
||||||
|
DWORD KeFeatureBits;
|
||||||
|
|
||||||
|
} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
|
||||||
|
|
||||||
|
// SystemPerformanceInfo (2)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PERFORMANCE_INFO
|
||||||
|
{
|
||||||
|
LARGE_INTEGER TotalProcessorTime;
|
||||||
|
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 Unknown6;
|
||||||
|
ULONG Unknown7;
|
||||||
|
ULONG Unknown8;
|
||||||
|
ULONG Unknown9;
|
||||||
|
ULONG MmTotalSystemFreePtes;
|
||||||
|
ULONG MmSystemCodepage;
|
||||||
|
ULONG MmTotalSystemDriverPages;
|
||||||
|
ULONG MmTotalSystemCodePages;
|
||||||
|
ULONG Unknown10;
|
||||||
|
ULONG Unknown11;
|
||||||
|
ULONG Unknown12;
|
||||||
|
ULONG MmSystemCachePage;
|
||||||
|
ULONG MmPagedPoolPage;
|
||||||
|
ULONG MmSystemDriverPage;
|
||||||
|
ULONG CcFastReadNoWait;
|
||||||
|
ULONG CcFastReadWait;
|
||||||
|
ULONG CcFastReadResourceMiss;
|
||||||
|
ULONG CcFastReadNotPossible;
|
||||||
|
ULONG CcFastMdlReadNoWait;
|
||||||
|
ULONG CcFastMdlReadWait;
|
||||||
|
ULONG CcFastMdlReadResourceMiss;
|
||||||
|
ULONG CcFastMdlReadNotPossible;
|
||||||
|
ULONG CcMapDataNoWait;
|
||||||
|
ULONG CcMapDataWait;
|
||||||
|
ULONG CcMapDataNoWaitMiss;
|
||||||
|
ULONG CcMapDataWaitMiss;
|
||||||
|
ULONG CcPinMappedDataCount;
|
||||||
|
ULONG CcPinReadNoWait;
|
||||||
|
ULONG CcPinReadWait;
|
||||||
|
ULONG CcPinReadNoWaitMiss;
|
||||||
|
ULONG CcPinReadWaitMiss;
|
||||||
|
ULONG CcCopyReadNoWait;
|
||||||
|
ULONG CcCopyReadWait;
|
||||||
|
ULONG CcCopyReadNoWaitMiss;
|
||||||
|
ULONG CcCopyReadWaitMiss;
|
||||||
|
ULONG CcMdlReadNoWait;
|
||||||
|
ULONG CcMdlReadWait;
|
||||||
|
ULONG CcMdlReadNoWaitMiss;
|
||||||
|
ULONG CcMdlReadWaitMiss;
|
||||||
|
ULONG CcReadaheadIos;
|
||||||
|
ULONG CcLazyWriteIos;
|
||||||
|
ULONG CcLazyWritePages;
|
||||||
|
ULONG CcDataFlushes;
|
||||||
|
ULONG CcDataPages;
|
||||||
|
ULONG ContextSwitches;
|
||||||
|
ULONG Unknown13;
|
||||||
|
ULONG Unknown14;
|
||||||
|
ULONG SystemCalls;
|
||||||
|
|
||||||
|
} SYSTEM_PERFORMANCE_INFO, *PSYSTEM_PERFORMANCE_INFO;
|
||||||
|
|
||||||
|
// SystemTimeInformation (3)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_TIME_INFORMATION
|
||||||
|
{
|
||||||
|
TIME KeBootTime;
|
||||||
|
TIME KeSystemTime;
|
||||||
|
TIME ExpTimeZoneBias;
|
||||||
|
ULONG ExpTimeZoneId;
|
||||||
|
ULONG Unused;
|
||||||
|
|
||||||
|
} SYSTEM_TIME_INFORMATION, *PSYSTEM_TIME_INFORMATION;
|
||||||
|
|
||||||
|
// SystemPathInformation (4)
|
||||||
|
// IT DOES NOT WORK
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PATH_INFORMATION
|
||||||
|
{
|
||||||
|
PVOID Dummy;
|
||||||
|
|
||||||
|
} SYSTEM_PATH_INFORMATION, * PSYSTEM_PATH_INFORMATION;
|
||||||
|
|
||||||
|
// SystemProcessThreadInfo (5)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_THREAD_INFORMATION
|
||||||
|
{
|
||||||
|
TIME KernelTime;
|
||||||
|
TIME UserTime;
|
||||||
|
TIME CreateTime;
|
||||||
|
ULONG TickCount;
|
||||||
|
ULONG StartEIP;
|
||||||
|
CLIENT_ID ClientId;
|
||||||
|
ULONG DynamicPriority;
|
||||||
|
ULONG BasePriority;
|
||||||
|
ULONG nSwitches;
|
||||||
|
DWORD State;
|
||||||
|
KWAIT_REASON WaitReason;
|
||||||
|
|
||||||
|
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct SYSTEM_PROCESS_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG RelativeOffset;
|
||||||
|
ULONG ThreadCount;
|
||||||
|
ULONG Unused1 [6];
|
||||||
|
TIME CreateTime;
|
||||||
|
TIME UserTime;
|
||||||
|
TIME KernelTime;
|
||||||
|
UNICODE_STRING Name;
|
||||||
|
ULONG BasePriority;
|
||||||
|
ULONG ProcessId;
|
||||||
|
ULONG ParentProcessId;
|
||||||
|
ULONG HandleCount;
|
||||||
|
ULONG Unused2[2];
|
||||||
|
ULONG PeakVirtualSizeBytes;
|
||||||
|
ULONG TotalVirtualSizeBytes;
|
||||||
|
ULONG PageFaultCount;
|
||||||
|
ULONG PeakWorkingSetSizeBytes;
|
||||||
|
ULONG TotalWorkingSetSizeBytes;
|
||||||
|
ULONG PeakPagedPoolUsagePages;
|
||||||
|
ULONG TotalPagedPoolUsagePages;
|
||||||
|
ULONG PeakNonPagedPoolUsagePages;
|
||||||
|
ULONG TotalNonPagedPoolUsagePages;
|
||||||
|
ULONG TotalPageFileUsageBytes;
|
||||||
|
ULONG PeakPageFileUsageBytes;
|
||||||
|
ULONG TotalPrivateBytes;
|
||||||
|
SYSTEM_THREAD_INFORMATION ThreadSysInfo [1];
|
||||||
|
|
||||||
|
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
|
||||||
|
|
||||||
|
// SystemServiceDescriptorTableInfo (6)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_SDT_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG BufferLength;
|
||||||
|
ULONG NumberOfSystemServiceTables;
|
||||||
|
ULONG NumberOfServices [1];
|
||||||
|
ULONG ServiceCounters [1];
|
||||||
|
|
||||||
|
} SYSTEM_SDT_INFORMATION, *PSYSTEM_SDT_INFORMATION;
|
||||||
|
|
||||||
|
// SystemIoConfigInformation (7)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_IOCONFIG_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG DiskCount;
|
||||||
|
ULONG FloppyCount;
|
||||||
|
ULONG CdRomCount;
|
||||||
|
ULONG TapeCount;
|
||||||
|
ULONG SerialCount;
|
||||||
|
ULONG ParallelCount;
|
||||||
|
|
||||||
|
} SYSTEM_IOCONFIG_INFORMATION, *PSYSTEM_IOCONFIG_INFORMATION;
|
||||||
|
|
||||||
|
// SystemProcessorTimeInformation (8)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PROCESSORTIME_INFO
|
||||||
|
{
|
||||||
|
TIME TotalProcessorRunTime;
|
||||||
|
TIME TotalProcessorTime;
|
||||||
|
TIME TotalProcessorUserTime;
|
||||||
|
TIME TotalDPCTime;
|
||||||
|
TIME TotalInterruptTime;
|
||||||
|
ULONG TotalInterrupts;
|
||||||
|
ULONG Unused;
|
||||||
|
|
||||||
|
} SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO;
|
||||||
|
|
||||||
|
// SystemNtGlobalFlagInformation (9)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_GLOBAL_FLAG_INFO
|
||||||
|
{
|
||||||
|
ULONG NtGlobalFlag;
|
||||||
|
|
||||||
|
} SYSTEM_GLOBAL_FLAG_INFO, * PSYSTEM_GLOBAL_FLAG_INFO;
|
||||||
|
|
||||||
|
// SystemInformation10 (10)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemModuleInformation (11)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_MODULE_ENTRY
|
||||||
|
{
|
||||||
|
ULONG Unused;
|
||||||
|
ULONG Always0;
|
||||||
|
ULONG ModuleBaseAddress;
|
||||||
|
ULONG ModuleSize;
|
||||||
|
ULONG Unknown;
|
||||||
|
ULONG ModuleEntryIndex;
|
||||||
|
USHORT ModuleNameLength; /* Length of module name not including the path, this field contains valid value only for NTOSKRNL module*/
|
||||||
|
USHORT ModulePathLength; /* Length of 'directory path' part of modulename*/
|
||||||
|
CHAR ModuleName [256];
|
||||||
|
|
||||||
|
} SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_MODULE_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG Count;
|
||||||
|
SYSTEM_MODULE_ENTRY Module [1];
|
||||||
|
|
||||||
|
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
|
||||||
|
|
||||||
|
// SystemResourceLockInformation (12)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_RESOURCE_LOCK_ENTRY
|
||||||
|
{
|
||||||
|
ULONG ResourceAddress;
|
||||||
|
ULONG Always1;
|
||||||
|
ULONG Unknown;
|
||||||
|
ULONG ActiveCount;
|
||||||
|
ULONG ContentionCount;
|
||||||
|
ULONG Unused[2];
|
||||||
|
ULONG NumberOfSharedWaiters;
|
||||||
|
ULONG NumberOfExclusiveWaiters;
|
||||||
|
|
||||||
|
} SYSTEM_RESOURCE_LOCK_ENTRY, *PSYSTEM_RESOURCE_LOCK_ENTRY;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_RESOURCE_LOCK_INFO
|
||||||
|
{
|
||||||
|
ULONG Count;
|
||||||
|
SYSTEM_RESOURCE_LOCK_ENTRY Lock [1];
|
||||||
|
|
||||||
|
} SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
|
||||||
|
|
||||||
|
// SystemInformation13 (13)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemInformation14 (14)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemInformation15 (15)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemHandleInformation (16)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_HANDLE_ENTRY
|
||||||
|
{
|
||||||
|
ULONG OwnerPid;
|
||||||
|
USHORT ObjectType;
|
||||||
|
USHORT HandleValue;
|
||||||
|
PVOID ObjectPointer;
|
||||||
|
ULONG AccessMask;
|
||||||
|
|
||||||
|
} SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_HANDLE_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG Count;
|
||||||
|
SYSTEM_HANDLE_ENTRY Handle [1];
|
||||||
|
|
||||||
|
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
|
||||||
|
|
||||||
|
// SystemObjectInformation (17)
|
||||||
|
// UNKNOWN
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_OBJECT_INFORMATION
|
||||||
|
{
|
||||||
|
DWORD Unknown;
|
||||||
|
/* FIXME */
|
||||||
|
} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
|
||||||
|
|
||||||
|
// SystemPageFileInformation (18)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PAGEFILE_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG RelativeOffset;
|
||||||
|
ULONG CurrentSizePages;
|
||||||
|
ULONG TotalUsedPages;
|
||||||
|
ULONG PeakUsedPages;
|
||||||
|
UNICODE_STRING PagefileFileName;
|
||||||
|
|
||||||
|
} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
|
||||||
|
|
||||||
|
// SystemInstructionEmulationInfo (19)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_VDM_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG VdmSegmentNotPresentCount;
|
||||||
|
ULONG VdmINSWCount;
|
||||||
|
ULONG VdmESPREFIXCount;
|
||||||
|
ULONG VdmCSPREFIXCount;
|
||||||
|
ULONG VdmSSPREFIXCount;
|
||||||
|
ULONG VdmDSPREFIXCount;
|
||||||
|
ULONG VdmFSPREFIXCount;
|
||||||
|
ULONG VdmGSPREFIXCount;
|
||||||
|
ULONG VdmOPER32PREFIXCount;
|
||||||
|
ULONG VdmADDR32PREFIXCount;
|
||||||
|
ULONG VdmINSBCount;
|
||||||
|
ULONG VdmINSWV86Count;
|
||||||
|
ULONG VdmOUTSBCount;
|
||||||
|
ULONG VdmOUTSWCount;
|
||||||
|
ULONG VdmPUSHFCount;
|
||||||
|
ULONG VdmPOPFCount;
|
||||||
|
ULONG VdmINTNNCount;
|
||||||
|
ULONG VdmINTOCount;
|
||||||
|
ULONG VdmIRETCount;
|
||||||
|
ULONG VdmINBIMMCount;
|
||||||
|
ULONG VdmINWIMMCount;
|
||||||
|
ULONG VdmOUTBIMMCount;
|
||||||
|
ULONG VdmOUTWIMMCount;
|
||||||
|
ULONG VdmINBCount;
|
||||||
|
ULONG VdmINWCount;
|
||||||
|
ULONG VdmOUTBCount;
|
||||||
|
ULONG VdmOUTWCount;
|
||||||
|
ULONG VdmLOCKPREFIXCount;
|
||||||
|
ULONG VdmREPNEPREFIXCount;
|
||||||
|
ULONG VdmREPPREFIXCount;
|
||||||
|
ULONG VdmHLTCount;
|
||||||
|
ULONG VdmCLICount;
|
||||||
|
ULONG VdmSTICount;
|
||||||
|
ULONG VdmBopCount;
|
||||||
|
|
||||||
|
} SYSTEM_VDM_INFORMATION, *PSYSTEM_VDM_INFORMATION;
|
||||||
|
|
||||||
|
// SystemInformation20 (20)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemCacheInformation (21)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_CACHE_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG CurrentSize;
|
||||||
|
ULONG PeakSize;
|
||||||
|
ULONG PageFaultCount;
|
||||||
|
ULONG MinimumWorkingSet;
|
||||||
|
ULONG MaximumWorkingSet;
|
||||||
|
ULONG Unused[4];
|
||||||
|
|
||||||
|
} SYSTEM_CACHE_INFORMATION;
|
||||||
|
|
||||||
|
// SystemPoolTagInformation (22)
|
||||||
|
// found by Klaus P. Gerlicher
|
||||||
|
// (implemented only in checked builds)
|
||||||
|
typedef
|
||||||
|
struct _POOL_TAG_STATS
|
||||||
|
{
|
||||||
|
ULONG AllocationCount;
|
||||||
|
ULONG FreeCount;
|
||||||
|
ULONG SizeBytes;
|
||||||
|
|
||||||
|
} POOL_TAG_STATS;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_POOL_TAG_ENTRY
|
||||||
|
{
|
||||||
|
ULONG Tag;
|
||||||
|
POOL_TAG_STATS Paged;
|
||||||
|
POOL_TAG_STATS NonPaged;
|
||||||
|
|
||||||
|
} SYSTEM_POOL_TAG_ENTRY, * PSYSTEM_POOL_TAG_ENTRY;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_POOL_TAG_INFO
|
||||||
|
{
|
||||||
|
ULONG Count;
|
||||||
|
SYSTEM_POOL_TAG_ENTRY PoolEntry [1];
|
||||||
|
|
||||||
|
} SYSTEM_POOL_TAG_INFO, *PSYSTEM_POOL_TAG_INFO;
|
||||||
|
|
||||||
|
// SystemProcessorScheduleInfo (23)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PROCESSOR_SCHEDULE_INFO
|
||||||
|
{
|
||||||
|
ULONG nContextSwitches;
|
||||||
|
ULONG nDPCQueued;
|
||||||
|
ULONG nDPCRate;
|
||||||
|
ULONG TimerResolution;
|
||||||
|
ULONG nDPCBypasses;
|
||||||
|
ULONG nAPCBypasses;
|
||||||
|
|
||||||
|
} SYSTEM_PROCESSOR_SCHEDULE_INFO, *PSYSTEM_PROCESSOR_SCHEDULE_INFO;
|
||||||
|
|
||||||
|
// SystemDpcInformation (24)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_DPC_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG Unused;
|
||||||
|
ULONG KiMaximumDpcQueueDepth;
|
||||||
|
ULONG KiMinimumDpcRate;
|
||||||
|
ULONG KiAdjustDpcThreshold;
|
||||||
|
ULONG KiIdealDpcRate;
|
||||||
|
|
||||||
|
} SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;
|
||||||
|
|
||||||
|
// SystemInformation25 (25)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemLoadImage (26)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_IMAGE_LOAD
|
||||||
|
{
|
||||||
|
UNICODE_STRING ModuleFileName IN;
|
||||||
|
PVOID BaseAddress OUT;
|
||||||
|
PVOID Section OUT;
|
||||||
|
PVOID EntryPoint OUT;
|
||||||
|
PVOID ExportDirectory OUT;
|
||||||
|
|
||||||
|
} SYSTEM_IMAGE_LOAD, *PSYSTEM_IMAGE_LOAD;
|
||||||
|
|
||||||
|
// SystemUnloadImage (27)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_IMAGE_UNLOAD
|
||||||
|
{
|
||||||
|
PVOID Section IN; /* see SYSTEM_IMAGE_LOAD.ModuleSection */
|
||||||
|
|
||||||
|
} SYSTEM_IMAGE_UNLOAD, *PSYSTEM_IMAGE_UNLOAD;
|
||||||
|
|
||||||
|
|
||||||
|
// SystemTimeAdjustmentInformation (28)
|
||||||
|
// (what is the right one?)
|
||||||
|
#if 0
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_TIME_ADJUSTMENT_INFO
|
||||||
|
{
|
||||||
|
TIME TimeAdjustment;
|
||||||
|
BOOL TimeAdjustmentDisabled;
|
||||||
|
|
||||||
|
} SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
|
||||||
|
#else
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_TIME_ADJUSTMENT_INFO
|
||||||
|
{
|
||||||
|
ULONG KeTimeAdjustment;
|
||||||
|
ULONG KeMaximumIncrement;
|
||||||
|
BOOLEAN KeTimeSynchronization;
|
||||||
|
|
||||||
|
} SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// SystemProcessorFaultCountInfo (33)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_PROCESSOR_FAULT_INFO
|
||||||
|
{
|
||||||
|
ULONG nAlignmentFixup;
|
||||||
|
ULONG nExceptionDispatches;
|
||||||
|
ULONG nFloatingEmulation;
|
||||||
|
ULONG Unknown;
|
||||||
|
|
||||||
|
} SYSTEM_PROCESSOR_FAULT_INFO, *PSYSTEM_PROCESSOR_FAULT_INFO;
|
||||||
|
|
||||||
|
// SystemCrashDumpStateInfo (34)
|
||||||
|
//
|
||||||
|
|
||||||
|
// SystemDebuggerInformation (35)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_DEBUGGER_INFO
|
||||||
|
{
|
||||||
|
BOOLEAN KdDebuggerEnabled;
|
||||||
|
BOOLEAN KdDebuggerPresent;
|
||||||
|
|
||||||
|
} SYSTEM_DEBUGGER_INFO, *PSYSTEM_DEBUGGER_INFO;
|
||||||
|
|
||||||
|
// SystemInformation36 (36)
|
||||||
|
// UNKNOWN
|
||||||
|
|
||||||
|
// SystemQuotaInformation (37)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_QUOTA_INFORMATION
|
||||||
|
{
|
||||||
|
ULONG CmpGlobalQuota;
|
||||||
|
ULONG CmpGlobalQuotaUsed;
|
||||||
|
ULONG MmSizeofPagedPoolInBytes;
|
||||||
|
|
||||||
|
} SYSTEM_QUOTA_INFORMATION, *PSYSTEM_QUOTA_INFORMATION;
|
||||||
|
|
||||||
|
// SystemLoadDriver (38)
|
||||||
|
typedef
|
||||||
|
struct _SYSTEM_DRIVER_LOAD
|
||||||
|
{
|
||||||
|
UNICODE_STRING DriverRegistryEntry;
|
||||||
|
|
||||||
|
} SYSTEM_DRIVER_LOAD, *PSYSTEM_DRIVER_LOAD;
|
||||||
|
|
||||||
|
|
||||||
#define SystemInformation0 0
|
|
||||||
#define SystemInformation1 1
|
|
||||||
#define SystemPerformanceInformation 2
|
|
||||||
#define SystemTimeInformation 3
|
|
||||||
#define SystemProcessInformation 5
|
|
||||||
#define SystemGlobalFlagInformation 9
|
|
||||||
#define SystemDriverInformation 11
|
|
||||||
#define SystemPageFileInformation 18
|
|
||||||
#define SystemCacheInformation 21
|
|
||||||
#define SystemPoolTagStatsInformation 22
|
|
||||||
#define SystemTimeAdjustmentInformation 28
|
|
||||||
#define SystemTimeZoneInformation 44
|
|
||||||
|
|
||||||
// memory information
|
// memory information
|
||||||
|
|
||||||
|
@ -264,168 +835,6 @@ typedef struct _OBJECT_TYPE_INFORMATION
|
||||||
ULONG ReferenceCount;
|
ULONG ReferenceCount;
|
||||||
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
|
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
|
||||||
|
|
||||||
// system information
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
#pragma pack(2)
|
|
||||||
typedef struct _SYSTEM_THREAD_INFORMATION
|
|
||||||
{
|
|
||||||
FILETIME ftCreationTime;
|
|
||||||
DWORD dwUnknown1;
|
|
||||||
PVOID dwStartAddress;
|
|
||||||
DWORD dwOwningPID;
|
|
||||||
DWORD dwThreadID;
|
|
||||||
DWORD dwCurrentPriority;
|
|
||||||
DWORD dwBasePriority;
|
|
||||||
DWORD dwContextSwitches;
|
|
||||||
DWORD dwThreadState;
|
|
||||||
DWORD dwWaitReason;
|
|
||||||
DWORD dwUnknown2 [ 5 ];
|
|
||||||
|
|
||||||
|
|
||||||
} SYSTEM_THREAD_INFORMATION, * PSYSTEM_THREAD_INFORMATION;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_PROCESS_INFORMATION
|
|
||||||
{
|
|
||||||
DWORD dwOffset;
|
|
||||||
DWORD dwThreadCount;
|
|
||||||
DWORD dwUnknown1 [6];
|
|
||||||
FILETIME ftCreationTime;
|
|
||||||
DWORD dwUnknown2 [5];
|
|
||||||
WCHAR * pszProcessName;
|
|
||||||
DWORD dwBasePriority;
|
|
||||||
DWORD dwProcessID;
|
|
||||||
DWORD dwParentProcessID;
|
|
||||||
DWORD dwHandleCount;
|
|
||||||
DWORD dwUnknown3;
|
|
||||||
DWORD dwUnknown4;
|
|
||||||
DWORD dwVirtualBytesPeak;
|
|
||||||
DWORD dwVirtualBytes;
|
|
||||||
DWORD dwPageFaults;
|
|
||||||
DWORD dwWorkingSetPeak;
|
|
||||||
DWORD dwWorkingSet;
|
|
||||||
DWORD dwUnknown5;
|
|
||||||
DWORD dwPagedPool;
|
|
||||||
DWORD dwUnknown6;
|
|
||||||
DWORD dwNonPagedPool;
|
|
||||||
DWORD dwPageFileBytesPeak;
|
|
||||||
DWORD dwPrivateBytes;
|
|
||||||
DWORD dwPageFileBytes;
|
|
||||||
DWORD dwUnknown7 [4];
|
|
||||||
SYSTEM_THREAD_INFORMATION Threads [1];
|
|
||||||
|
|
||||||
} SYSTEM_PROCESS_INFORMATION, * PSYSTEM_PROCESS_INFORMATION;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_TIME_INFORMATION
|
|
||||||
{
|
|
||||||
LARGE_INTEGER BootTime;
|
|
||||||
LARGE_INTEGER SystemTime;
|
|
||||||
LARGE_INTEGER TimeZoneBias;
|
|
||||||
ULONG TimeZoneId;
|
|
||||||
ULONG Unknown;
|
|
||||||
} SYSTEM_TIME_INFORMATION, *PSYSTEM_TIME_INFORMATION;
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_GLOBAL_FLAGS_INFO
|
|
||||||
{
|
|
||||||
DWORD GlobalFlags;
|
|
||||||
|
|
||||||
} SYSTEM_GLOBAL_FLAGS_INFO, * PSYSTEM_GLOBAL_FLAGS_INFO;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
#pragma pack(4)
|
|
||||||
typedef struct _SYSTEM_DRIVER_INFO
|
|
||||||
{
|
|
||||||
PVOID BaseAddress;
|
|
||||||
DWORD Unknown1;
|
|
||||||
DWORD Unknown2;
|
|
||||||
DWORD EntryIndex;
|
|
||||||
DWORD Unknown4;
|
|
||||||
CHAR DriverName [256];
|
|
||||||
|
|
||||||
} SYSTEM_DRIVER_INFO, * PSYSTEM_DRIVER_INFO;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_DRIVERS_INFO
|
|
||||||
{
|
|
||||||
DWORD DriverCount;
|
|
||||||
SYSTEM_DRIVER_INFO DriverInfo[1];
|
|
||||||
} SYSTEM_DRIVERS_INFO, *PSYSTEM_DRIVERS_INFO;
|
|
||||||
|
|
||||||
#pragma pack(4)
|
|
||||||
typedef struct _SYSTEM_TIME_ADJUSTMENT
|
|
||||||
{
|
|
||||||
TIME TimeAdjustment;
|
|
||||||
BOOL TimeAdjustmentDisabled;
|
|
||||||
|
|
||||||
} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_CONFIGURATION_INFO {
|
|
||||||
union {
|
|
||||||
ULONG OemId;
|
|
||||||
struct {
|
|
||||||
WORD ProcessorArchitecture;
|
|
||||||
WORD Reserved;
|
|
||||||
} tag1;
|
|
||||||
} tag2;
|
|
||||||
ULONG PageSize;
|
|
||||||
PVOID MinimumApplicationAddress;
|
|
||||||
PVOID MaximumApplicationAddress;
|
|
||||||
ULONG ActiveProcessorMask;
|
|
||||||
ULONG NumberOfProcessors;
|
|
||||||
ULONG ProcessorType;
|
|
||||||
ULONG AllocationGranularity;
|
|
||||||
WORD ProcessorLevel;
|
|
||||||
WORD ProcessorRevision;
|
|
||||||
} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_PAGEFILE_INFORMATION
|
|
||||||
{
|
|
||||||
DWORD Unknown [6];
|
|
||||||
WCHAR PagefileName [16];
|
|
||||||
|
|
||||||
} SYSTEM_PAGEFILE_INFORMATION, * PSYSTEM_PAGEFILE_INFORMATION;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_CACHE_INFORMATION
|
|
||||||
{
|
|
||||||
ULONG CurrentSize;
|
|
||||||
ULONG PeakSize;
|
|
||||||
ULONG PageFaultCount;
|
|
||||||
ULONG MinimumWorkingSet;
|
|
||||||
ULONG MaximumWorkingSet;
|
|
||||||
ULONG Unused[4];
|
|
||||||
} SYSTEM_CACHE_INFORMATION;
|
|
||||||
|
|
||||||
|
|
||||||
/* SYSTEM_POOL_ENTRY_INFO, SYSTEM_POOL_INFORMATION
|
|
||||||
* found by Klaus P. Gerlicher */
|
|
||||||
typedef
|
|
||||||
struct _SYSTEM_POOL_ENTRY_INFO
|
|
||||||
{
|
|
||||||
ULONG Tag;
|
|
||||||
ULONG NP_Allocs;
|
|
||||||
ULONG NP_Frees;
|
|
||||||
ULONG NP_Used;
|
|
||||||
ULONG P_Allocs;
|
|
||||||
ULONG P_Frees;
|
|
||||||
ULONG P_Used;
|
|
||||||
|
|
||||||
} SYSTEM_POOL_ENTRY_INFO, * PSYSTEM_POOL_ENTRY_INFO;
|
|
||||||
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct _SYSTEM_POOL_INFORMATION
|
|
||||||
{
|
|
||||||
ULONG Count;
|
|
||||||
SYSTEM_POOL_ENTRY_INFO PoolEntry [1];
|
|
||||||
|
|
||||||
} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// file information
|
// file information
|
||||||
|
|
||||||
typedef struct _FILE_BASIC_INFORMATION
|
typedef struct _FILE_BASIC_INFORMATION
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef _FMIFS_H
|
#ifndef _FMIFS_H
|
||||||
#define _FMIFS_H
|
#define _FMIFS_H
|
||||||
/* $Id: fmifs.h,v 1.1 1999/05/11 21:16:01 ea Exp $
|
/* $Id: fmifs.h,v 1.2 2000/04/25 23:22:48 ea Exp $
|
||||||
*
|
*
|
||||||
* fmifs.h
|
* fmifs.h
|
||||||
*
|
*
|
||||||
|
@ -67,7 +67,7 @@ BOOL
|
||||||
/* Chkdsk command in FMIFS */
|
/* Chkdsk command in FMIFS */
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
ChkDsk(
|
Chkdsk(
|
||||||
PWCHAR DriveRoot,
|
PWCHAR DriveRoot,
|
||||||
PWCHAR Format,
|
PWCHAR Format,
|
||||||
BOOL CorrectErrors,
|
BOOL CorrectErrors,
|
||||||
|
|
12
reactos/include/kernel32/error.h
Normal file
12
reactos/include/kernel32/error.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef _INCLUDE_KERNEL32_H
|
||||||
|
#define _INCLUDE_KERNEL32_H
|
||||||
|
/* $Id: error.h,v 1.1 2000/04/25 23:22:52 ea Exp $ */
|
||||||
|
#include <windows.h>
|
||||||
|
#define NTOS_MODE_USER
|
||||||
|
#include <ntos.h>
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
SetLastErrorByStatus (
|
||||||
|
NTSTATUS Status
|
||||||
|
);
|
||||||
|
#endif /* _INCLUDE_KERNEL32_H */
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: csr.h,v 1.2 2000/03/22 18:35:47 dwelch Exp $
|
/* $Id: csr.h,v 1.3 2000/04/25 23:22:52 ea Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -12,6 +12,12 @@ NTSTATUS STDCALL CsrClientCallServer(PCSRSS_API_REQUEST Request,
|
||||||
PCSRSS_API_REPLY Reply,
|
PCSRSS_API_REPLY Reply,
|
||||||
ULONG Length,
|
ULONG Length,
|
||||||
ULONG ReplyLength);
|
ULONG ReplyLength);
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
CsrSetPriorityClass (
|
||||||
|
HANDLE hProcess,
|
||||||
|
DWORD * PriorityClass
|
||||||
|
);
|
||||||
|
|
||||||
#endif /* __INCLUDE_NTDLL_CSR_H */
|
#endif /* __INCLUDE_NTDLL_CSR_H */
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* $Id: dllmain.c,v 1.1 1999/05/11 21:19:41 ea Exp $
|
/* $Id: dllmain.c,v 1.2 2000/04/25 23:22:53 ea Exp $
|
||||||
*
|
*
|
||||||
* ReactOS FMIFS.DLL
|
* ReactOS FMIFS.DLL
|
||||||
*/
|
*/
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
INT
|
BOOLEAN
|
||||||
__stdcall
|
__stdcall
|
||||||
DllMain(
|
DllMain(
|
||||||
PVOID hinstDll,
|
PVOID hinstDll,
|
||||||
|
@ -22,6 +22,6 @@ DllMain(
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return(1);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $Id: makefile,v 1.32 2000/04/06 17:23:26 ekohl Exp $
|
# $Id: makefile,v 1.33 2000/04/25 23:22:53 ea Exp $
|
||||||
#
|
#
|
||||||
# ReactOS Operating System
|
# ReactOS Operating System
|
||||||
#
|
#
|
||||||
|
@ -27,7 +27,7 @@ SYNCH_OBJECTS = synch/critical.o synch/event.o synch/wait.o synch/intrlck.o sync
|
||||||
|
|
||||||
MISC_OBJECTS = misc/error.o misc/atom.o misc/handle.o misc/env.o misc/dllmain.o \
|
MISC_OBJECTS = misc/error.o misc/atom.o misc/handle.o misc/env.o misc/dllmain.o \
|
||||||
misc/console.o misc/time.o misc/stubs.o misc/rtl.o misc/ldr.o misc/res.o \
|
misc/console.o misc/time.o misc/stubs.o misc/rtl.o misc/ldr.o misc/res.o \
|
||||||
misc/debug.o
|
misc/debug.o misc/sysinfo.o
|
||||||
|
|
||||||
FILE_OBJECTS = file/file.o file/curdir.o file/lfile.o file/dir.o \
|
FILE_OBJECTS = file/file.o file/curdir.o file/lfile.o file/dir.o \
|
||||||
file/iocompl.o file/volume.o file/deviceio.o file/dosdev.o \
|
file/iocompl.o file/volume.o file/deviceio.o file/dosdev.o \
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: error.c,v 1.12 1999/10/07 23:45:07 ekohl Exp $
|
/* $Id: error.c,v 1.13 2000/04/25 23:22:53 ea Exp $
|
||||||
*
|
*
|
||||||
* reactos/lib/kernel32/misc/error.c
|
* reactos/lib/kernel32/misc/error.c
|
||||||
*
|
*
|
||||||
|
@ -8,9 +8,20 @@
|
||||||
|
|
||||||
// #define NDEBUG
|
// #define NDEBUG
|
||||||
#include <kernel32/kernel32.h>
|
#include <kernel32/kernel32.h>
|
||||||
|
#include <kernel32/error.h>
|
||||||
|
|
||||||
|
|
||||||
static DWORD LastError=0;
|
/* INTERNAL */
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
SetLastErrorByStatus (
|
||||||
|
NTSTATUS Status
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DWORD Error = RtlNtStatusToDosError (Status);
|
||||||
|
SetLastError (Error);
|
||||||
|
return (Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -19,16 +30,14 @@ SetLastError (
|
||||||
DWORD dwErrorCode
|
DWORD dwErrorCode
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
/* FIXME: it is per thread */
|
NtCurrentTeb ()->LastErrorValue = (ULONG) dwErrorCode;
|
||||||
LastError = dwErrorCode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
GetLastError (VOID)
|
GetLastError (VOID)
|
||||||
{
|
{
|
||||||
/* FIXME: it is per thread */
|
return (DWORD) (NtCurrentTeb ()->LastErrorValue);
|
||||||
return LastError;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: stubs.c,v 1.14 2000/04/14 01:49:40 ekohl Exp $
|
/* $Id: stubs.c,v 1.15 2000/04/25 23:22:54 ea Exp $
|
||||||
*
|
*
|
||||||
* KERNEL32.DLL stubs (unimplemented functions)
|
* KERNEL32.DLL stubs (unimplemented functions)
|
||||||
* Remove from this file, if you implement them.
|
* Remove from this file, if you implement them.
|
||||||
|
@ -1691,18 +1691,6 @@ GetOEMCP (VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
GetPriorityClass (
|
|
||||||
HANDLE hProcess
|
|
||||||
)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return NORMAL_PRIORITY_CLASS; /* FIXME: call NTOSKRNL.Ps */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
UINT
|
UINT
|
||||||
STDCALL
|
STDCALL
|
||||||
GetPrivateProfileIntW (
|
GetPrivateProfileIntW (
|
||||||
|
@ -2073,40 +2061,6 @@ GetSystemDefaultLangID (VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
GetSystemInfo (
|
|
||||||
LPSYSTEM_INFO lpSystemInfo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
/* FIXME: ??? */
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
|
|
||||||
lpSystemInfo->u.s.wProcessorArchitecture =
|
|
||||||
PROCESSOR_ARCHITECTURE_INTEL;
|
|
||||||
lpSystemInfo->u.s.wReserved =
|
|
||||||
0;
|
|
||||||
lpSystemInfo->dwPageSize =
|
|
||||||
4096; /* FIXME: x86 default; may be 4Mb */
|
|
||||||
lpSystemInfo->lpMinimumApplicationAddress =
|
|
||||||
(PVOID) 0x00010000; /* ? */
|
|
||||||
lpSystemInfo->lpMaximumApplicationAddress =
|
|
||||||
(PVOID) 0x00010000; /* ? */
|
|
||||||
lpSystemInfo->dwActiveProcessorMask =
|
|
||||||
0x00000001;
|
|
||||||
lpSystemInfo->dwNumberOfProcessors =
|
|
||||||
1; /* ReactOS is UP for now! */
|
|
||||||
lpSystemInfo->dwProcessorType =
|
|
||||||
PROCESSOR_INTEL_PENTIUM;
|
|
||||||
lpSystemInfo->dwAllocationGranularity =
|
|
||||||
65536; /* hard coded on Intel? */
|
|
||||||
lpSystemInfo->wProcessorLevel =
|
|
||||||
5; /* from cpuid on Intel? */
|
|
||||||
lpSystemInfo->wProcessorRevision =
|
|
||||||
0x0000; /* from cpuid on Intel? */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
GetSystemPowerStatus (
|
GetSystemPowerStatus (
|
||||||
|
@ -3508,18 +3462,6 @@ SetNamedPipeHandleState (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WINBOOL
|
|
||||||
STDCALL
|
|
||||||
SetPriorityClass (
|
|
||||||
HANDLE hProcess,
|
|
||||||
DWORD dwPriorityClass
|
|
||||||
)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WINBOOL
|
WINBOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
SetProcessShutdownParameters (
|
SetProcessShutdownParameters (
|
||||||
|
|
100
reactos/lib/kernel32/misc/sysinfo.c
Normal file
100
reactos/lib/kernel32/misc/sysinfo.c
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
/* $Id: sysinfo.c,v 1.1 2000/04/25 23:22:54 ea Exp $
|
||||||
|
*
|
||||||
|
* reactos/lib/kernel32/misc/sysinfo.c
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
|
||||||
|
#include <kernel32/kernel32.h>
|
||||||
|
#include <kernel32/error.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define PV_NT351 0x00030033
|
||||||
|
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
GetSystemInfo (
|
||||||
|
LPSYSTEM_INFO Si
|
||||||
|
)
|
||||||
|
{
|
||||||
|
SYSTEM_BASIC_INFORMATION Sbi;
|
||||||
|
SYSTEM_PROCESSOR_INFORMATION Spi;
|
||||||
|
DWORD ProcessVersion;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
RtlZeroMemory (Si, sizeof (SYSTEM_INFO));
|
||||||
|
Status = NtQuerySystemInformation (
|
||||||
|
SystemBasicInformation, /* 0 */
|
||||||
|
& Sbi,
|
||||||
|
sizeof Sbi, /* 44 */
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (STATUS_SUCCESS != Status)
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Status = NtQuerySystemInformation (
|
||||||
|
SystemProcessorInformation, /* 1 */
|
||||||
|
& Spi,
|
||||||
|
sizeof Spi, /* 12 */
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (STATUS_SUCCESS != Status)
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* PROCESSOR_ARCHITECTURE_INTEL 0
|
||||||
|
* PROCESSOR_ARCHITECTURE_MIPS 1
|
||||||
|
* PROCESSOR_ARCHITECTURE_ALPHA 2
|
||||||
|
* PROCESSOR_ARCHITECTURE_PPC 3
|
||||||
|
* PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
|
||||||
|
*/
|
||||||
|
Si->u.s.wProcessorArchitecture = Spi.KeProcessorArchitecture;
|
||||||
|
/* 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;
|
||||||
|
/*
|
||||||
|
* Compatibility:
|
||||||
|
* PROCESSOR_INTEL_386 386
|
||||||
|
* PROCESSOR_INTEL_486 486
|
||||||
|
* PROCESSOR_INTEL_PENTIUM 586
|
||||||
|
* PROCESSOR_MIPS_R4000 4000
|
||||||
|
* PROCESSOR_ALPHA_21064 21064
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
|
switch (Spi.KeProcessorArchitecture)
|
||||||
|
{
|
||||||
|
case :
|
||||||
|
#endif
|
||||||
|
Si->dwProcessorType = PROCESSOR_INTEL_PENTIUM;
|
||||||
|
#if 0
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Si->dwAllocationGranularity = 65536; /* hard coded on Intel? */
|
||||||
|
Si->wProcessorRevision = Spi.KeProcessorRevision;
|
||||||
|
/*
|
||||||
|
* Get the version of Windows on which
|
||||||
|
* the process expects to run.
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
|
ProcessVersion = GetProcessVersion (0); /* current process */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* In NT 3.1, these fields were always zero. */
|
||||||
|
if (PV_NT351 > ProcessVersion)
|
||||||
|
{
|
||||||
|
Si->wProcessorLevel = 0;
|
||||||
|
Si->wProcessorRevision = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* EOF */
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: proc.c,v 1.31 2000/03/16 01:14:37 ekohl Exp $
|
/* $Id: proc.c,v 1.32 2000/04/25 23:22:54 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -16,10 +16,13 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <kernel32/proc.h>
|
#include <kernel32/proc.h>
|
||||||
#include <kernel32/thread.h>
|
#include <kernel32/thread.h>
|
||||||
|
#include <kernel32/error.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <internal/i386/segment.h>
|
#include <internal/i386/segment.h>
|
||||||
#include <internal/teb.h>
|
#include <internal/teb.h>
|
||||||
|
#include <ntdll/csr.h>
|
||||||
|
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <kernel32/kernel32.h>
|
#include <kernel32/kernel32.h>
|
||||||
|
@ -61,8 +64,35 @@ GetProcessTimes (
|
||||||
LPFILETIME lpUserTime
|
LPFILETIME lpUserTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DPRINT("GetProcessTimes is unimplemented\n");
|
NTSTATUS Status;
|
||||||
return FALSE;
|
KERNEL_USER_TIMES Kut;
|
||||||
|
|
||||||
|
Status = NtQueryInformationProcess (
|
||||||
|
hProcess,
|
||||||
|
ProcessTimes,
|
||||||
|
& Kut,
|
||||||
|
sizeof Kut,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
lpCreationTime->dwLowDateTime = Kut.CreateTime.u.LowPart;
|
||||||
|
lpCreationTime->dwHighDateTime = Kut.CreateTime.u.HighPart;
|
||||||
|
|
||||||
|
lpExitTime->dwLowDateTime = Kut.ExitTime.u.LowPart;
|
||||||
|
lpExitTime->dwHighDateTime = Kut.ExitTime.u.HighPart;
|
||||||
|
|
||||||
|
lpKernelTime->dwLowDateTime = Kut.KernelTime.u.LowPart;
|
||||||
|
lpKernelTime->dwHighDateTime = Kut.KernelTime.u.HighPart;
|
||||||
|
|
||||||
|
lpUserTime->dwLowDateTime = Kut.UserTime.u.LowPart;
|
||||||
|
lpUserTime->dwHighDateTime = Kut.UserTime.u.HighPart;
|
||||||
|
|
||||||
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,7 +132,7 @@ GetExitCodeProcess (
|
||||||
&BytesWritten);
|
&BytesWritten);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
memcpy(lpExitCode, &ProcessBasic.ExitStatus, sizeof(DWORD));
|
memcpy(lpExitCode, &ProcessBasic.ExitStatus, sizeof(DWORD));
|
||||||
|
@ -128,7 +158,7 @@ GetProcessId (
|
||||||
&BytesWritten);
|
&BytesWritten);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
memcpy( lpProcessId ,&ProcessBasic.UniqueProcessId,sizeof(DWORD));
|
memcpy( lpProcessId ,&ProcessBasic.UniqueProcessId,sizeof(DWORD));
|
||||||
|
@ -169,7 +199,7 @@ OpenProcess (
|
||||||
&ClientId);
|
&ClientId);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return ProcessHandle;
|
return ProcessHandle;
|
||||||
|
@ -207,8 +237,13 @@ WinExec (
|
||||||
dosErr = GetLastError();
|
dosErr = GetLastError();
|
||||||
return dosErr;
|
return dosErr;
|
||||||
}
|
}
|
||||||
if ( lpfnGlobalRegisterWaitForInputIdle != NULL )
|
if (NULL != lpfnGlobalRegisterWaitForInputIdle)
|
||||||
lpfnGlobalRegisterWaitForInputIdle(ProcessInformation.hProcess,10000);
|
{
|
||||||
|
lpfnGlobalRegisterWaitForInputIdle (
|
||||||
|
ProcessInformation.hProcess,
|
||||||
|
10000
|
||||||
|
);
|
||||||
|
}
|
||||||
NtClose (ProcessInformation.hProcess);
|
NtClose (ProcessInformation.hProcess);
|
||||||
NtClose (ProcessInformation.hThread);
|
NtClose (ProcessInformation.hThread);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -263,7 +298,7 @@ SleepEx (
|
||||||
errCode = NtDelayExecution (bAlertable, & Interval);
|
errCode = NtDelayExecution (bAlertable, & Interval);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -396,7 +431,7 @@ FlushInstructionCache (
|
||||||
dwSize);
|
dwSize);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -426,7 +461,7 @@ TerminateProcess (
|
||||||
errCode = NtTerminateProcess (hProcess, uExitCode);
|
errCode = NtTerminateProcess (hProcess, uExitCode);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(errCode))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(errCode));
|
SetLastErrorByStatus (errCode);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -467,4 +502,111 @@ FatalAppExitW (
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
GetPriorityClass (
|
||||||
|
HANDLE hProcess
|
||||||
|
)
|
||||||
|
{
|
||||||
|
HANDLE hProcessTmp;
|
||||||
|
DWORD CsrPriorityClass;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = NtDuplicateObject (
|
||||||
|
GetCurrentProcess(),
|
||||||
|
hProcess,
|
||||||
|
GetCurrentProcess(),
|
||||||
|
& hProcessTmp,
|
||||||
|
(PROCESS_SET_INFORMATION | PROCESS_QUERY_INFORMATION),
|
||||||
|
FALSE,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return (0); /* ERROR */
|
||||||
|
}
|
||||||
|
/* Ask CSRSS to set it */
|
||||||
|
CsrSetPriorityClass (
|
||||||
|
hProcessTmp,
|
||||||
|
& CsrPriorityClass
|
||||||
|
);
|
||||||
|
NtClose (hProcessTmp);
|
||||||
|
/* Translate CSR->W32 priorities */
|
||||||
|
switch (CsrPriorityClass)
|
||||||
|
{
|
||||||
|
case CSR_PRIORITY_CLASS_NORMAL:
|
||||||
|
return (NORMAL_PRIORITY_CLASS); /* 32 */
|
||||||
|
case CSR_PRIORITY_CLASS_IDLE:
|
||||||
|
return (IDLE_PRIORITY_CLASS); /* 64 */
|
||||||
|
case CSR_PRIORITY_CLASS_HIGH:
|
||||||
|
return (HIGH_PRIORITY_CLASS); /* 128 */
|
||||||
|
case CSR_PRIORITY_CLASS_REALTIME:
|
||||||
|
return (REALTIME_PRIORITY_CLASS); /* 256 */
|
||||||
|
}
|
||||||
|
SetLastError (ERROR_ACCESS_DENIED);
|
||||||
|
return (0); /* ERROR */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WINBOOL
|
||||||
|
STDCALL
|
||||||
|
SetPriorityClass (
|
||||||
|
HANDLE hProcess,
|
||||||
|
DWORD dwPriorityClass
|
||||||
|
)
|
||||||
|
{
|
||||||
|
HANDLE hProcessTmp;
|
||||||
|
DWORD CsrPriorityClass;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
switch (dwPriorityClass)
|
||||||
|
{
|
||||||
|
case NORMAL_PRIORITY_CLASS: /* 32 */
|
||||||
|
CsrPriorityClass = CSR_PRIORITY_CLASS_NORMAL;
|
||||||
|
break;
|
||||||
|
case IDLE_PRIORITY_CLASS: /* 64 */
|
||||||
|
CsrPriorityClass = CSR_PRIORITY_CLASS_IDLE;
|
||||||
|
break;
|
||||||
|
case HIGH_PRIORITY_CLASS: /* 128 */
|
||||||
|
CsrPriorityClass = CSR_PRIORITY_CLASS_HIGH;
|
||||||
|
break;
|
||||||
|
case REALTIME_PRIORITY_CLASS: /* 256 */
|
||||||
|
CsrPriorityClass = CSR_PRIORITY_CLASS_REALTIME;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SetLastError (ERROR_INVALID_PARAMETER);
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
|
Status = NtDuplicateObject (
|
||||||
|
GetCurrentProcess(),
|
||||||
|
hProcess,
|
||||||
|
GetCurrentProcess(),
|
||||||
|
& hProcessTmp,
|
||||||
|
(PROCESS_SET_INFORMATION | PROCESS_QUERY_INFORMATION),
|
||||||
|
FALSE,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return (FALSE); /* ERROR */
|
||||||
|
}
|
||||||
|
/* Ask CSRSS to set it */
|
||||||
|
Status = CsrSetPriorityClass (
|
||||||
|
hProcessTmp,
|
||||||
|
& CsrPriorityClass
|
||||||
|
);
|
||||||
|
NtClose (hProcessTmp);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
|
return (TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: critical.c,v 1.8 2000/04/20 05:28:31 phreak Exp $
|
/* $Id: critical.c,v 1.9 2000/04/25 23:22:55 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -14,6 +14,9 @@
|
||||||
|
|
||||||
#include <kernel32/kernel32.h>
|
#include <kernel32/kernel32.h>
|
||||||
|
|
||||||
|
#define NTOS_MODE_USER
|
||||||
|
#include <ntos.h>
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: api.c,v 1.5 2000/04/03 21:54:36 dwelch Exp $
|
/* $Id: api.c,v 1.6 2000/04/25 23:22:55 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -11,6 +11,7 @@
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <ntdll/csr.h>
|
#include <ntdll/csr.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <internal/ps.h>
|
||||||
|
|
||||||
#include <csrss/csrss.h>
|
#include <csrss/csrss.h>
|
||||||
|
|
||||||
|
@ -83,3 +84,19 @@ NTSTATUS STDCALL CsrClientConnectToServer(VOID)
|
||||||
}
|
}
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
CsrSetPriorityClass (
|
||||||
|
HANDLE hProcess,
|
||||||
|
DWORD * PriorityClass
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* FIXME: call csrss to get hProcess' priority */
|
||||||
|
*PriorityClass = PS_PRIORITY_CLASS_NORMAL;
|
||||||
|
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntdll.def,v 1.52 2000/04/15 23:10:02 ekohl Exp $
|
; $Id: ntdll.def,v 1.53 2000/04/25 23:22:55 ea Exp $
|
||||||
;
|
;
|
||||||
; ReactOS Operating System
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -7,6 +7,7 @@ LIBRARY ntdll.dll
|
||||||
EXPORTS
|
EXPORTS
|
||||||
CsrClientCallServer@16
|
CsrClientCallServer@16
|
||||||
;CsrClientConnectToServer@24
|
;CsrClientConnectToServer@24
|
||||||
|
CsrSetPriorityClass@8
|
||||||
DbgBreakPoint@0
|
DbgBreakPoint@0
|
||||||
DbgPrint
|
DbgPrint
|
||||||
;DbgPrompt
|
;DbgPrompt
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntdll.edf,v 1.41 2000/04/15 23:10:02 ekohl Exp $
|
; $Id: ntdll.edf,v 1.42 2000/04/25 23:22:56 ea Exp $
|
||||||
;
|
;
|
||||||
; ReactOS Operating System
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -7,6 +7,7 @@ LIBRARY ntdll.dll
|
||||||
EXPORTS
|
EXPORTS
|
||||||
CsrClientCallServer=CsrClientCallServer@16
|
CsrClientCallServer=CsrClientCallServer@16
|
||||||
;CsrClientConnectToServer=CsrClientConnectToServer@24
|
;CsrClientConnectToServer=CsrClientConnectToServer@24
|
||||||
|
CsrSetPriorityClass=CsrSetPriorityClass@8
|
||||||
DbgBreakPoint=DbgBreakPoint@0
|
DbgBreakPoint=DbgBreakPoint@0
|
||||||
DbgPrint
|
DbgPrint
|
||||||
;DbgPrompt
|
;DbgPrompt
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: sysinfo.c,v 1.4 2000/03/26 19:38:18 ea Exp $
|
/* $Id: sysinfo.c,v 1.5 2000/04/25 23:22:56 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
||||||
|
extern ULONG NtGlobalFlag; /* FIXME: it should go in a ddk/?.h */
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -44,10 +46,653 @@ NtSetSystemEnvironmentValue (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* --- Query/Set System Information --- */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: QSI_DEF(n) and SSI_DEF(n) define _cdecl function symbols
|
||||||
|
* so the stack is popped only in one place on x86 platform.
|
||||||
|
*/
|
||||||
|
#define QSI_USE(n) QSI##n
|
||||||
|
#define QSI_DEF(n) \
|
||||||
|
static NTSTATUS QSI_USE(n) (PVOID Buffer, ULONG Size, PULONG ReqSize)
|
||||||
|
|
||||||
|
#define SSI_USE(n) SSI##n
|
||||||
|
#define SSI_DEF(n) \
|
||||||
|
static NTSTATUS SSI_USE(n) (PVOID Buffer, ULONG Size)
|
||||||
|
|
||||||
|
/* Class 0 - Basic Information */
|
||||||
|
QSI_DEF(SystemBasicInformation)
|
||||||
|
{
|
||||||
|
PSYSTEM_BASIC_INFORMATION Sbi
|
||||||
|
= (PSYSTEM_BASIC_INFORMATION) Buffer;
|
||||||
|
|
||||||
|
*ReqSize = sizeof (SYSTEM_BASIC_INFORMATION);
|
||||||
|
/*
|
||||||
|
* Check user buffer's size
|
||||||
|
*/
|
||||||
|
if (Size < sizeof (SYSTEM_BASIC_INFORMATION))
|
||||||
|
{
|
||||||
|
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 */
|
||||||
|
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 1 - Processor Information */
|
||||||
|
QSI_DEF(SystemProcessorInformation)
|
||||||
|
{
|
||||||
|
PSYSTEM_PROCESSOR_INFORMATION Spi
|
||||||
|
= (PSYSTEM_PROCESSOR_INFORMATION) Buffer;
|
||||||
|
|
||||||
|
*ReqSize = sizeof (SYSTEM_PROCESSOR_INFORMATION);
|
||||||
|
/*
|
||||||
|
* Check user buffer's size
|
||||||
|
*/
|
||||||
|
if (Size < sizeof (SYSTEM_PROCESSOR_INFORMATION))
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
|
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 2 - Performance Information */
|
||||||
|
QSI_DEF(SystemPerformanceInfo)
|
||||||
|
{
|
||||||
|
PSYSTEM_PERFORMANCE_INFO Spi
|
||||||
|
= (PSYSTEM_PERFORMANCE_INFO) Buffer;
|
||||||
|
|
||||||
|
*ReqSize = sizeof (SYSTEM_PERFORMANCE_INFO);
|
||||||
|
/*
|
||||||
|
* Check user buffer's size
|
||||||
|
*/
|
||||||
|
if (Size < sizeof (SYSTEM_PERFORMANCE_INFO))
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
Spi->TotalProcessorTime.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->Unknown6 = 0; /* FIXME */
|
||||||
|
Spi->Unknown7 = 0; /* FIXME */
|
||||||
|
Spi->Unknown8 = 0; /* FIXME */
|
||||||
|
Spi->Unknown9 = 0; /* FIXME */
|
||||||
|
Spi->MmTotalSystemFreePtes = 0; /* FIXME */
|
||||||
|
Spi->MmSystemCodepage = 0; /* FIXME */
|
||||||
|
Spi->MmTotalSystemDriverPages = 0; /* FIXME */
|
||||||
|
Spi->MmTotalSystemCodePages = 0; /* FIXME */
|
||||||
|
Spi->Unknown10 = 0; /* FIXME */
|
||||||
|
Spi->Unknown11 = 0; /* FIXME */
|
||||||
|
Spi->Unknown12 = 0; /* FIXME */
|
||||||
|
Spi->MmSystemCachePage = 0; /* FIXME */
|
||||||
|
Spi->MmPagedPoolPage = 0; /* FIXME */
|
||||||
|
Spi->MmSystemDriverPage = 0; /* FIXME */
|
||||||
|
Spi->CcFastReadNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcFastReadWait = 0; /* FIXME */
|
||||||
|
Spi->CcFastReadResourceMiss = 0; /* FIXME */
|
||||||
|
Spi->CcFastReadNotPossible = 0; /* FIXME */
|
||||||
|
Spi->CcFastMdlReadNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcFastMdlReadWait = 0; /* FIXME */
|
||||||
|
Spi->CcFastMdlReadResourceMiss = 0; /* FIXME */
|
||||||
|
Spi->CcFastMdlReadNotPossible = 0; /* FIXME */
|
||||||
|
Spi->CcMapDataNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcMapDataWait = 0; /* FIXME */
|
||||||
|
Spi->CcMapDataNoWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcMapDataWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcPinMappedDataCount = 0; /* FIXME */
|
||||||
|
Spi->CcPinReadNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcPinReadWait = 0; /* FIXME */
|
||||||
|
Spi->CcPinReadNoWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcPinReadWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcCopyReadNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcCopyReadWait = 0; /* FIXME */
|
||||||
|
Spi->CcCopyReadNoWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcCopyReadWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcMdlReadNoWait = 0; /* FIXME */
|
||||||
|
Spi->CcMdlReadWait = 0; /* FIXME */
|
||||||
|
Spi->CcMdlReadNoWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcMdlReadWaitMiss = 0; /* FIXME */
|
||||||
|
Spi->CcReadaheadIos = 0; /* FIXME */
|
||||||
|
Spi->CcLazyWriteIos = 0; /* FIXME */
|
||||||
|
Spi->CcLazyWritePages = 0; /* FIXME */
|
||||||
|
Spi->CcDataFlushes = 0; /* FIXME */
|
||||||
|
Spi->CcDataPages = 0; /* FIXME */
|
||||||
|
Spi->ContextSwitches = 0; /* FIXME */
|
||||||
|
Spi->Unknown13 = 0; /* FIXME */
|
||||||
|
Spi->Unknown14 = 0; /* FIXME */
|
||||||
|
Spi->SystemCalls = 0; /* FIXME */
|
||||||
|
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 3 - Time Information */
|
||||||
|
QSI_DEF(SystemTimeInformation)
|
||||||
|
{
|
||||||
|
PSYSTEM_TIME_INFORMATION Sti
|
||||||
|
= (PSYSTEM_TIME_INFORMATION) Buffer;
|
||||||
|
|
||||||
|
*ReqSize = sizeof (SYSTEM_TIME_INFORMATION);
|
||||||
|
/*
|
||||||
|
* Check user buffer's size
|
||||||
|
*/
|
||||||
|
if (Size < sizeof (SYSTEM_TIME_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 */
|
||||||
|
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 4 - Path Information */
|
||||||
|
QSI_DEF(SystemPathInformation)
|
||||||
|
{
|
||||||
|
/* FIXME: QSI returns STATUS_BREAKPOINT. Why? */
|
||||||
|
return (STATUS_BREAKPOINT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 5 - Process Information */
|
||||||
|
QSI_DEF(SystemProcessInformation)
|
||||||
|
{
|
||||||
|
/* FIXME: scan the process+thread list */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 6 - SDT Information */
|
||||||
|
QSI_DEF(SystemServiceDescriptorTableInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 7 - I/O Configuration Information */
|
||||||
|
QSI_DEF(SystemIoConfigInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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)
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
NtGlobalFlag = ((PSYSTEM_GLOBAL_FLAG_INFO) Buffer)->NtGlobalFlag;
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 10 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation10)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 11 - Modules Information */
|
||||||
|
QSI_DEF(SystemModuleInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 12 - Resource Lock Information */
|
||||||
|
QSI_DEF(SystemResourceLockInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 13 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation13)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 14 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation14)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 15 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation15)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 16 - Handle Information */
|
||||||
|
QSI_DEF(SystemHandleInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 17 - Information */
|
||||||
|
QSI_DEF(SystemObjectInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 18 - Information */
|
||||||
|
QSI_DEF(SystemPageFileInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 19 - Information */
|
||||||
|
QSI_DEF(SystemInstructionEmulationInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 20 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation20)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 21 - Information */
|
||||||
|
QSI_DEF(SystemCacheInformation)
|
||||||
|
{
|
||||||
|
if (Size < sizeof (SYSTEM_CACHE_INFORMATION))
|
||||||
|
{
|
||||||
|
* ReqSize = sizeof (SYSTEM_CACHE_INFORMATION);
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
SSI_DEF(SystemCacheInformation)
|
||||||
|
{
|
||||||
|
if (Size < sizeof (SYSTEM_CACHE_INFORMATION))
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 22 - Pool Tag Information */
|
||||||
|
QSI_DEF(SystemPoolTagInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 23 - Processor Schedule Information */
|
||||||
|
QSI_DEF(SystemProcessorScheduleInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 24 - DPC Information */
|
||||||
|
QSI_DEF(SystemDpcInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
SSI_DEF(SystemDpcInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 25 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation25)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 26 - Load Image (callable) */
|
||||||
|
SSI_DEF(SystemLoadImage)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 27 - Unload Image (callable) */
|
||||||
|
SSI_DEF(SystemUnloadImage)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 28 - Information */
|
||||||
|
QSI_DEF(SystemTimeAdjustmentInformation)
|
||||||
|
{
|
||||||
|
if (sizeof (SYSTEM_TIME_ADJUSTMENT_INFO) > Size)
|
||||||
|
{
|
||||||
|
* ReqSize = sizeof (SYSTEM_TIME_ADJUSTMENT_INFO);
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* FIXME: */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
SSI_DEF(SystemTimeAdjustmentInformation)
|
||||||
|
{
|
||||||
|
if (sizeof (SYSTEM_TIME_ADJUSTMENT_INFO) > Size)
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* FIXME: */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 29 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation29)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 30 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation30)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 31 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation31)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 32 - Crach Dump Information */
|
||||||
|
QSI_DEF(SystemCrashDumpSectionInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 33 - Processor Fault Information */
|
||||||
|
QSI_DEF(SystemProcessorFaultCountInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 34 - Crach Dump State Information */
|
||||||
|
QSI_DEF(SystemCrashDumpStateInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 35 - Debugger Information */
|
||||||
|
QSI_DEF(SystemDebuggerInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 36 - Thread Switch Counters Information */
|
||||||
|
QSI_DEF(SystemThreadSwitchCountersInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 37 - Quota Information */
|
||||||
|
QSI_DEF(SystemQuotaInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
SSI_DEF(SystemQuotaInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 38 - Load Driver Information */
|
||||||
|
SSI_DEF(SystemLoadDriverInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 39 - Priority Separation Information */
|
||||||
|
SSI_DEF(SystemPrioritySeparationInfo)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 40 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation40)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 41 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation41)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 42 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation42)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 43 - ? Information */
|
||||||
|
QSI_DEF(SystemInformation43)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Class 44 - Information */
|
||||||
|
QSI_DEF(SystemTimeZoneInformation)
|
||||||
|
{
|
||||||
|
* ReqSize = sizeof (TIME_ZONE_INFORMATION);
|
||||||
|
|
||||||
|
if (sizeof (TIME_ZONE_INFORMATION) != Size)
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* Copy the time zone information struct */
|
||||||
|
memcpy (
|
||||||
|
Buffer,
|
||||||
|
& SystemTimeZoneInfo,
|
||||||
|
sizeof (TIME_ZONE_INFORMATION)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SSI_DEF(SystemTimeZoneInformation)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Check user buffer's size
|
||||||
|
*/
|
||||||
|
if (Size < sizeof (TIME_ZONE_INFORMATION))
|
||||||
|
{
|
||||||
|
return (STATUS_INFO_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
/* Copy the time zone information struct */
|
||||||
|
memcpy (
|
||||||
|
& SystemTimeZoneInfo,
|
||||||
|
(TIME_ZONE_INFORMATION *) Buffer,
|
||||||
|
sizeof (TIME_ZONE_INFORMATION)
|
||||||
|
);
|
||||||
|
return (STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Class 45 - Information */
|
||||||
|
QSI_DEF(SystemLookasideInformation)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
return (STATUS_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Query/Set Calls Table */
|
||||||
|
typedef
|
||||||
|
struct _QSSI_CALLS
|
||||||
|
{
|
||||||
|
NTSTATUS (* Query) (PVOID,ULONG,PULONG);
|
||||||
|
NTSTATUS (* Set) (PVOID,ULONG);
|
||||||
|
|
||||||
|
} QSSI_CALLS;
|
||||||
|
|
||||||
|
// QS Query & Set
|
||||||
|
// QX Query
|
||||||
|
// XQ Set
|
||||||
|
// XX unknown behaviour
|
||||||
|
//
|
||||||
|
#define SI_QS(n) {QSI_USE(n),SSI_USE(n)}
|
||||||
|
#define SI_QX(n) {QSI_USE(n),NULL}
|
||||||
|
#define SI_XS(n) {NULL,SSI_USE(n)}
|
||||||
|
#define SI_XX(n) {NULL,NULL}
|
||||||
|
|
||||||
|
static
|
||||||
|
QSSI_CALLS
|
||||||
|
CallQS [] =
|
||||||
|
{
|
||||||
|
SI_QX(SystemBasicInformation),
|
||||||
|
SI_QX(SystemProcessorInformation),
|
||||||
|
SI_QX(SystemPerformanceInfo),
|
||||||
|
SI_QX(SystemTimeInformation),
|
||||||
|
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(SystemObjectInformation),
|
||||||
|
SI_QX(SystemPageFileInformation),
|
||||||
|
SI_QX(SystemInstructionEmulationInfo),
|
||||||
|
SI_QX(SystemInformation20), /* it should be SI_XX */
|
||||||
|
SI_QS(SystemCacheInformation),
|
||||||
|
SI_QX(SystemPoolTagInformation),
|
||||||
|
SI_QX(SystemProcessorScheduleInfo),
|
||||||
|
SI_QS(SystemDpcInformation),
|
||||||
|
SI_QX(SystemInformation25), /* it should be SI_XX */
|
||||||
|
SI_XS(SystemLoadImage),
|
||||||
|
SI_XS(SystemUnloadImage),
|
||||||
|
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(SystemLookasideInformation)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtQuerySystemInformation (
|
NtQuerySystemInformation (
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
OUT PVOID SystemInformation,
|
OUT PVOID SystemInformation,
|
||||||
IN ULONG Length,
|
IN ULONG Length,
|
||||||
OUT PULONG ResultLength
|
OUT PULONG ResultLength
|
||||||
|
@ -74,116 +719,34 @@ NtQuerySystemInformation (
|
||||||
/*
|
/*
|
||||||
* Clear the user buffer.
|
* Clear the user buffer.
|
||||||
*/
|
*/
|
||||||
memset(
|
RtlZeroMemory (SystemInformation, Length);
|
||||||
SystemInformation,
|
|
||||||
0,
|
|
||||||
Length
|
|
||||||
);
|
|
||||||
/*
|
/*
|
||||||
* Check the request is valid.
|
* Check the request is valid.
|
||||||
*/
|
*/
|
||||||
switch (SystemInformationClass)
|
if ( (SystemInformationClass >= SystemInformationClassMin)
|
||||||
|
&& (SystemInformationClass < SystemInformationClassMax)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (NULL != CallQS [SystemInformationClass].Query)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
/*---*/
|
|
||||||
case SystemPerformanceInformation:
|
|
||||||
/*
|
/*
|
||||||
* Check user buffer's size
|
* Hand the request to a subhandler.
|
||||||
*/
|
*/
|
||||||
if (Length < sizeof())
|
return CallQS [SystemInformationClass].Query (
|
||||||
{
|
SystemInformation,
|
||||||
*ResultLength =
|
Length,
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
ResultLength
|
||||||
|
);
|
||||||
}
|
}
|
||||||
/* FIXME */
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
/*---*/
|
|
||||||
case SystemDriverInformation:
|
|
||||||
/* Check user buffer's size */
|
|
||||||
if (Length < sizeof (SYSTEM_DRIVER_INFO))
|
|
||||||
{
|
|
||||||
*ResultLength = sizeof (SYSTEM_DRIVER_INFO);
|
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
}
|
}
|
||||||
/* FIXME: */
|
return (STATUS_INVALID_INFO_CLASS);
|
||||||
return STATUS_SUCCESS;
|
|
||||||
/*---*/
|
|
||||||
case SystemCacheInformation:
|
|
||||||
/* Check user buffer's size */
|
|
||||||
if (Length < sizeof (SYSTEM_CACHE_INFORMATION))
|
|
||||||
{
|
|
||||||
*ResultLength = sizeof (SYSTEM_CACHE_INFORMATION);
|
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
}
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
/*---*/
|
|
||||||
case SystemTimeAdjustmentInformation:
|
|
||||||
/*
|
|
||||||
* Check user buffer's size
|
|
||||||
*/
|
|
||||||
if (Length < sizeof (SYSTEM_TIME_ADJUSTMENT))
|
|
||||||
{
|
|
||||||
*ResultLength = sizeof (SYSTEM_TIME_ADJUSTMENT);
|
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
}
|
|
||||||
/* FIXME: */
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
/*---*/
|
|
||||||
case SystemConfigurationInformation:
|
|
||||||
{
|
|
||||||
PSYSTEM_CONFIGURATION_INFO Sci
|
|
||||||
= (PSYSTEM_CONFIGURATION_INFO) SystemInformation;
|
|
||||||
|
|
||||||
*ResultLength = sizeof (SYSTEM_CONFIGUTATION_INFO);
|
|
||||||
/*
|
|
||||||
* Check user buffer's size
|
|
||||||
*/
|
|
||||||
if (Length < sizeof (SYSTEM_CONFIGURATION_INFO))
|
|
||||||
{
|
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Fill the object with config data.
|
|
||||||
* FIXME: some data should come from the
|
|
||||||
* registry.
|
|
||||||
*/
|
|
||||||
Sci->tag2.tag1.ProcessorAchitecture
|
|
||||||
= 80586;
|
|
||||||
Sci->tag2.tag1.Reserved
|
|
||||||
= 0x00000000;
|
|
||||||
Sci->PageSize
|
|
||||||
= 4096;
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
case SystemTimeZoneInformation: /* 44 */
|
|
||||||
*ResultLength = sizeof (TIME_ZONE_INFORMATION);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check user buffer's size
|
|
||||||
*/
|
|
||||||
if (Length < sizeof (TIME_ZONE_INFORMATION))
|
|
||||||
{
|
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Copy the time zone information struct */
|
|
||||||
memcpy (SystemInformation,
|
|
||||||
&SystemTimeZoneInfo,
|
|
||||||
sizeof (TIME_ZONE_INFORMATION));
|
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
|
|
||||||
}
|
|
||||||
return STATUS_INVALID_INFO_CLASS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtSetSystemInformation (
|
NtSetSystemInformation (
|
||||||
IN CINT SystemInformationClass,
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
||||||
IN PVOID SystemInformation,
|
IN PVOID SystemInformation,
|
||||||
IN ULONG SystemInformationLength
|
IN ULONG SystemInformationLength
|
||||||
)
|
)
|
||||||
|
@ -206,32 +769,25 @@ NtSetSystemInformation (
|
||||||
// );
|
// );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check the request is valid.
|
* Check the request is valid.
|
||||||
*/
|
*/
|
||||||
switch (SystemInformationClass)
|
if ( (SystemInformationClass >= SystemInformationClassMin)
|
||||||
|
&& (SystemInformationClass < SystemInformationClassMax)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (NULL != CallQS [SystemInformationClass].Set)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
case SystemTimeZoneInformation: /* 44 */
|
|
||||||
/*
|
/*
|
||||||
* Check user buffer's size
|
* Hand the request to a subhandler.
|
||||||
*/
|
*/
|
||||||
if (SystemInformationLength < sizeof (TIME_ZONE_INFORMATION))
|
return CallQS [SystemInformationClass].Set (
|
||||||
{
|
SystemInformation,
|
||||||
return STATUS_INFO_LENGTH_MISMATCH;
|
SystemInformationLength
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy the time zone information struct */
|
|
||||||
memcpy (&SystemTimeZoneInfo,
|
|
||||||
&SystemInformation,
|
|
||||||
sizeof (TIME_ZONE_INFORMATION));
|
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
return (STATUS_INVALID_INFO_CLASS);
|
||||||
return STATUS_INVALID_INFO_CLASS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/*
|
/* $Id: time.c,v 1.9 2000/04/25 23:22:56 ea Exp $
|
||||||
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* FILE: kernel/excutive/time.c
|
* FILE: kernel/excutive/time.c
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
/* GLOBALS ******************************************************************/
|
/* GLOBALS ******************************************************************/
|
||||||
|
|
||||||
/* Note: Bias[minutes] = UTC - local time */
|
/* Note: Bias[minutes] = UTC - local time */
|
||||||
TIME_ZONE_INFORMATION SystemTimeZoneInfo;
|
TIME_ZONE_INFORMATION _SystemTimeZoneInfo;
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
@ -31,7 +32,7 @@ VOID
|
||||||
ExInitTimeZoneInfo (VOID)
|
ExInitTimeZoneInfo (VOID)
|
||||||
{
|
{
|
||||||
/* Initialize system time zone information */
|
/* Initialize system time zone information */
|
||||||
memset (&SystemTimeZoneInfo, 0, sizeof(TIME_ZONE_INFORMATION));
|
memset (& _SystemTimeZoneInfo, 0, sizeof(TIME_ZONE_INFORMATION));
|
||||||
|
|
||||||
/* FIXME: Read time zone information from the registry */
|
/* FIXME: Read time zone information from the registry */
|
||||||
|
|
||||||
|
@ -69,7 +70,7 @@ ExLocalTimeToSystemTime (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
SystemTime->QuadPart = LocalTime->QuadPart +
|
SystemTime->QuadPart = LocalTime->QuadPart +
|
||||||
SystemTimeZoneInfo.Bias * TICKSPERMINUTE;
|
_SystemTimeZoneInfo.Bias * TICKSPERMINUTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,7 +81,7 @@ ExSystemTimeToLocalTime (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
LocalTime->QuadPart = SystemTime->QuadPart -
|
LocalTime->QuadPart = SystemTime->QuadPart -
|
||||||
SystemTimeZoneInfo.Bias * TICKSPERMINUTE;
|
_SystemTimeZoneInfo.Bias * TICKSPERMINUTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -64,6 +64,7 @@ endif
|
||||||
CC = $(PREFIX)gcc
|
CC = $(PREFIX)gcc
|
||||||
NATIVE_CC = gcc
|
NATIVE_CC = gcc
|
||||||
CFLAGS = \
|
CFLAGS = \
|
||||||
|
$(BASE_CFLAGS) \
|
||||||
-pipe \
|
-pipe \
|
||||||
-O2 \
|
-O2 \
|
||||||
-Wall \
|
-Wall \
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
//======================================================================
|
//======================================================================
|
||||||
//
|
//
|
||||||
// $Id: chkdsk.c,v 1.2 2000/02/29 23:57:46 ea Exp $
|
// $Id: chkdsk.c,v 1.3 2000/04/25 23:22:57 ea Exp $
|
||||||
//
|
//
|
||||||
// Chkdskx
|
// Chkdskx
|
||||||
//
|
//
|
||||||
|
@ -63,7 +63,7 @@ WCHAR CurrentDirectory[1024];
|
||||||
//
|
//
|
||||||
// FMIFS function
|
// FMIFS function
|
||||||
//
|
//
|
||||||
//PCHKDSK ChkDsk;
|
//PCHKDSK Chkdsk;
|
||||||
#endif /* ndef FMIFS_IMPORT_DLL */
|
#endif /* ndef FMIFS_IMPORT_DLL */
|
||||||
|
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ LoadFMIFSEntryPoints(VOID)
|
||||||
{
|
{
|
||||||
LoadLibraryW( L"fmifs.dll" );
|
LoadLibraryW( L"fmifs.dll" );
|
||||||
|
|
||||||
if( !(ChkDsk =
|
if( !(Chkdsk =
|
||||||
(void *) GetProcAddress(
|
(void *) GetProcAddress(
|
||||||
GetModuleHandleW(L"fmifs.dll"),
|
GetModuleHandleW(L"fmifs.dll"),
|
||||||
"Chkdsk" ))
|
"Chkdsk" ))
|
||||||
|
@ -459,7 +459,7 @@ ReactOS adaptation 1999 by Emanuele Aliberti\n\n"
|
||||||
L"The type of file system is %s.\n",
|
L"The type of file system is %s.\n",
|
||||||
fileSystem
|
fileSystem
|
||||||
);
|
);
|
||||||
ChkDsk(
|
Chkdsk(
|
||||||
Drive,
|
Drive,
|
||||||
fileSystem,
|
fileSystem,
|
||||||
FixErrors,
|
FixErrors,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $Id: makefile,v 1.3 2000/02/29 23:57:47 ea Exp $
|
# $Id: makefile,v 1.4 2000/04/25 23:22:57 ea Exp $
|
||||||
#
|
#
|
||||||
# ReactOS System Utilities
|
# ReactOS System Utilities
|
||||||
#
|
#
|
||||||
|
@ -15,69 +15,110 @@
|
||||||
# 1999-12-19 (ea)
|
# 1999-12-19 (ea)
|
||||||
# Added qsi.c
|
# Added qsi.c
|
||||||
#
|
#
|
||||||
|
# 2000-04-23 (ea)
|
||||||
|
# Added pedump.c
|
||||||
|
#
|
||||||
|
BASE_CFLAGS = -I../../reactos/include
|
||||||
|
|
||||||
ROSINC=../../reactos/include
|
|
||||||
|
|
||||||
TARGET=regnav.exe chklib.exe
|
ROS_DIR=../../reactos
|
||||||
# chkdsk.exe format.exe \
|
ROS_INC=$(ROS_DIR)/include
|
||||||
# chklib.exe shutdown.exe regnav.exe
|
ROS_LIB=$(ROS_DIR)/lib
|
||||||
# login.exe chklib.exe shutdown.exe regnav.exe
|
IMPORT_NTDLL=$(ROS_LIB)/ntdll/ntdll.a
|
||||||
|
IMPORT_FMIFS=$(ROS_LIB)/fmifs/fmifs.a
|
||||||
|
IMPORT_KERNEL32=$(ROS_LIB)/kernel32/kernel32.a
|
||||||
|
IMPORT_USER32=$(ROS_LIB)/user32/user32.a
|
||||||
|
IMPORT_CRTDLL=$(ROS_LIB)/crtdll/crtdll.a
|
||||||
|
|
||||||
|
TARGET=\
|
||||||
|
regnav.exe \
|
||||||
|
chklib.exe \
|
||||||
|
qsi.exe
|
||||||
|
# pedump.exe \
|
||||||
|
# shutdown.exe \
|
||||||
|
# chkdsk.exe \
|
||||||
|
# format.exe \
|
||||||
|
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
# By Mark Russinovich
|
# By Mark Russinovich
|
||||||
|
|
||||||
chkdsk.exe: chkdsk.o win32err.o wmain.o
|
chkdsk.exe: chkdsk.o win32err.o wmain.o
|
||||||
$(CC) chkdsk.o win32err.o wmain.o \
|
$(CC) \
|
||||||
-o chkdsk.exe \
|
chkdsk.o \
|
||||||
-lkernel32 \
|
win32err.o \
|
||||||
-lcrtdll \
|
wmain.o \
|
||||||
-lfmifs
|
$(IMPORT_FMIFS) \
|
||||||
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o chkdsk.exe
|
||||||
$(NM) --numeric-sort chkdsk.exe > chkdsk.sym
|
$(NM) --numeric-sort chkdsk.exe > chkdsk.sym
|
||||||
|
|
||||||
format.exe: format.o win32err.o wmain.o
|
format.exe: format.o win32err.o wmain.o
|
||||||
$(CC) format.o win32err.o wmain.o \
|
$(CC) \
|
||||||
-o format.exe \
|
format.o \
|
||||||
-lkernel32 \
|
win32err.o \
|
||||||
-lcrtdll \
|
wmain.o \
|
||||||
-lfmifs
|
$(IMPORT_FMIFS) \
|
||||||
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o format.exe
|
||||||
$(NM) --numeric-sort format.exe > format.sym
|
$(NM) --numeric-sort format.exe > format.sym
|
||||||
|
|
||||||
#---
|
#---
|
||||||
|
|
||||||
chklib.exe: chklib.o win32err.o
|
chklib.exe: chklib.o win32err.o
|
||||||
$(CC) chklib.o win32err.o \
|
$(CC) \
|
||||||
-o chklib.exe \
|
chklib.o \
|
||||||
-lkernel32 \
|
win32err.o \
|
||||||
-lcrtdll
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o chklib.exe
|
||||||
$(NM) --numeric-sort chklib.exe > chklib.sym
|
$(NM) --numeric-sort chklib.exe > chklib.sym
|
||||||
|
|
||||||
|
|
||||||
regnav.exe: regnav.o win32err.o
|
regnav.exe: regnav.o win32err.o
|
||||||
$(CC) regnav.o win32err.o \
|
$(CC) \
|
||||||
-o regnav.exe \
|
regnav.o \
|
||||||
-lkernel32 \
|
win32err.o \
|
||||||
-lcrtdll
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o regnav.exe
|
||||||
$(NM) --numeric-sort regnav.exe > regnav.sym
|
$(NM) --numeric-sort regnav.exe > regnav.sym
|
||||||
|
|
||||||
|
|
||||||
shutdown.exe: shutdown.o win32err.o
|
shutdown.exe: shutdown.o win32err.o
|
||||||
$(CC) shutdown.o win32err.o \
|
$(CC) \
|
||||||
-o shutdown.exe \
|
shutdown.o \
|
||||||
-lkernel32 \
|
win32err.o \
|
||||||
-luser32 \
|
$(IMPORT_KERNEL32) \
|
||||||
-lcrtdll
|
$(IMPORT_USER32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o shutdown.exe
|
||||||
$(NM) --numeric-sort shutdown.exe > shutdown.sym
|
$(NM) --numeric-sort shutdown.exe > shutdown.sym
|
||||||
|
|
||||||
qsi.exe: qsi.o
|
qsi.exe: qsi.o
|
||||||
$(CC) qsi.o \
|
echo $(BASE_CFLAGS)
|
||||||
../../reactos/lib/ntdll/ntdll.a
|
$(CC) \
|
||||||
-o qsi.exe \
|
qsi.o \
|
||||||
-lkernel32 \
|
$(IMPORT_NTDLL) \
|
||||||
-lcrtdll
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o qsi.exe
|
||||||
$(NM) --numeric-sort qsi.exe > qsi.sym
|
$(NM) --numeric-sort qsi.exe > qsi.sym
|
||||||
|
|
||||||
qsi.o: qsi.c
|
qsi.o: qsi.c $(ROS_INC)/ddk/zwtypes.h
|
||||||
|
|
||||||
|
pedump.exe: pedump.o
|
||||||
|
$(CC) \
|
||||||
|
pedump.o \
|
||||||
|
$(IMPORT_NTDLL) \
|
||||||
|
$(IMPORT_KERNEL32) \
|
||||||
|
$(IMPORT_CRTDLL) \
|
||||||
|
-o pedump.exe
|
||||||
|
$(NM) --numeric-sort pedump.exe > pedump.sym
|
||||||
|
|
||||||
|
pedump.o: pedump.c
|
||||||
|
|
||||||
#---
|
#---
|
||||||
|
|
||||||
|
|
2548
rosapps/sysutils/qsi.c
Normal file
2548
rosapps/sysutils/qsi.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: shutdown.c,v 1.1 1999/05/16 07:27:35 ea Exp $
|
/* $Id: shutdown.c,v 1.2 2000/04/25 23:22:57 ea Exp $
|
||||||
*
|
*
|
||||||
* EAU shutdown.c 1.4.1
|
* EAU shutdown.c 1.4.1
|
||||||
*
|
*
|
||||||
|
@ -34,6 +34,11 @@
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
#include "win32err.h"
|
#include "win32err.h"
|
||||||
|
|
||||||
|
#ifndef SE_PRIVILEGE_ENABLED
|
||||||
|
#define NTOS_MODE_USER
|
||||||
|
#include <ntos.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
struct _EWX
|
struct _EWX
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue