Fixup sysinfo.c SystemProcessInfo header.
[reactos.git] / reactos / include / ntos / zwtypes.h
index 1d5ca09..d523d84 100755 (executable)
@@ -31,17 +31,6 @@ typedef struct _LDT_ENTRY {
   } HighWord;
 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
 
-typedef enum _THREAD_STATE {
-       StateInitialized,
-       StateReady,
-       StateRunning,
-       StateStandby,
-       StateTerminated,
-       StateWait,
-       StateTransition,
-       StateUnknown
-} THREAD_STATE;
-
 typedef enum _DEBUG_CONTROL_CODE
 {
   DebugGetTraceInformation = 1,
@@ -58,6 +47,7 @@ typedef enum _KPROFILE_SOURCE
   ProfileTime
 } KPROFILE_SOURCE;
 
+
 // file disposition values
 
 #define FILE_SUPERSEDE                  0x0000
@@ -336,53 +326,73 @@ typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
        ULONG  SystemCalls;
 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
 
+/*#ifndef __USE_W32API*/
+
 // SystemProcessThreadInfo (5)
-typedef struct _SYSTEM_THREAD_INFORMATION
-{
-       TIME            KernelTime;
-       TIME            UserTime;
-       TIME            CreateTime;
-       ULONG           WaitTime;
-       PVOID           StartAddress;
-       CLIENT_ID       ClientId;
-       KPRIORITY       Priority;
-       LONG            BasePriority;
-       ULONG           ContextSwitches;
-       ULONG           ThreadState;
-       KWAIT_REASON    WaitReason;
+typedef struct _SYSTEM_THREAD_INFORMATION 
+{
+    LARGE_INTEGER KernelTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER CreateTime;
+    ULONG WaitTime;
+    PVOID StartAddress;
+    CLIENT_ID ClientId;
+    KPRIORITY Priority;
+    LONG BasePriority;
+    ULONG ContextSwitches;
+    ULONG ThreadState;
+    ULONG WaitReason;
 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
 
-typedef struct SYSTEM_PROCESS_INFORMATION
-{
-       ULONG                           NextEntryOffset;
-       ULONG                           NumberOfThreads;
-       LARGE_INTEGER                   SpareLi1;
-       LARGE_INTEGER                   SpareLi2;
-       LARGE_INTEGER                   SpareLi3;
-       TIME                            CreateTime;
-       TIME                            UserTime;
-       TIME                            KernelTime;
-       UNICODE_STRING                  ImageName;
-       ULONG                           BasePriority;
-       HANDLE                          UniqueProcessId;
-       HANDLE                          InheritedFromUniqueProcessId;
-       ULONG                           HandleCount;
-       ULONG                           SessionId;
-       ULONG                           SpareUl3;
-       ULONG                           PeakVirtualSize;
-       ULONG                           VirtualSize;
-       ULONG                           PageFaultCount;
-       ULONG                           PeakWorkingSetSize;
-       ULONG                           WorkingSetSize;
-       ULONG                           QuotaPeakPagedPoolUsage;
-       ULONG                           QuotaPagedPoolUsage;
-       ULONG                           QuotaPeakNonPagedPoolUsage;
-       ULONG                           QuotaNonPagedPoolUsage;
-       ULONG                           PagefileUsage;
-       ULONG                           PeakPagefileUsage;
-       ULONG                           PrivatePageCount;
+typedef struct _SYSTEM_PROCESS_INFORMATION
+{
+    ULONG NextEntryOffset;
+    ULONG NumberOfThreads;
+    LARGE_INTEGER SpareLi1;
+    LARGE_INTEGER SpareLi2;
+    LARGE_INTEGER SpareLi3;
+    LARGE_INTEGER CreateTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER KernelTime;
+    UNICODE_STRING ImageName;
+    KPRIORITY BasePriority;
+    HANDLE UniqueProcessId;
+    HANDLE InheritedFromUniqueProcessId;
+    ULONG HandleCount;
+    ULONG SessionId;
+    ULONG PageDirectoryFrame;
+    
+    /* 
+     * This part corresponds to VM_COUNTERS_EX. 
+     * NOTE: *NOT* THE SAME AS VM_COUNTERS!
+     */
+    ULONG PeakVirtualSize;
+    ULONG VirtualSize;
+    ULONG PageFaultCount;
+    ULONG PeakWorkingSetSize;
+    ULONG WorkingSetSize;
+    ULONG QuotaPeakPagedPoolUsage;
+    ULONG QuotaPagedPoolUsage;
+    ULONG QuotaPeakNonPagedPoolUsage;
+    ULONG QuotaNonPagedPoolUsage;
+    ULONG PagefileUsage;
+    ULONG PeakPagefileUsage;
+    ULONG PrivateUsage;
+    
+    /* This part corresponds to IO_COUNTERS */
+    LARGE_INTEGER ReadOperationCount;
+    LARGE_INTEGER WriteOperationCount;
+    LARGE_INTEGER OtherOperationCount;
+    LARGE_INTEGER ReadTransferCount;
+    LARGE_INTEGER WriteTransferCount;
+    LARGE_INTEGER OtherTransferCount;
+    
+    /* Finally, the array of Threads */
+    SYSTEM_THREAD_INFORMATION TH[1];
 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
 
+/*#endif */
+
 // SystemModuleInformation (11)
 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
        ULONG    Unknown1;
@@ -489,6 +499,19 @@ struct _SYSTEM_CACHE_INFORMATION
 
 } SYSTEM_CACHE_INFORMATION;
 
+// SystemInterruptInformation (23)
+typedef
+struct _SYSTEM_INTERRUPT_INFORMATION
+{
+       ULONG   ContextSwitches;
+       ULONG   DpcCount;
+       ULONG   DpcRate;
+       ULONG   TimeIncrement;
+       ULONG   DpcBypassCount;
+       ULONG   ApcBypassCount;
+
+} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
+
 // SystemDpcInformation (24)
 typedef
 struct _SYSTEM_DPC_INFORMATION
@@ -684,8 +707,8 @@ typedef struct _PROCESS_BASIC_INFORMATION
        PPEB PebBaseAddress;
        KAFFINITY AffinityMask;
        KPRIORITY BasePriority;
-       ULONG UniqueProcessId;
-       ULONG InheritedFromUniqueProcessId;
+       HANDLE UniqueProcessId;
+       HANDLE InheritedFromUniqueProcessId;
 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
 
 // Information class 1
@@ -729,10 +752,10 @@ typedef struct _VM_COUNTERS_
 // Information class 4
 typedef struct _KERNEL_USER_TIMES
 {
-       TIME CreateTime;
-       TIME ExitTime;
-       TIME KernelTime;
-       TIME UserTime;
+       LARGE_INTEGER CreateTime;
+       LARGE_INTEGER ExitTime;
+       LARGE_INTEGER KernelTime;
+       LARGE_INTEGER UserTime;
 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
 
 // Information class 9
@@ -807,23 +830,7 @@ typedef struct _THREAD_BASIC_INFORMATION
 
 // file information
 
-typedef struct _FILE_BASIC_INFORMATION
-{
-       LARGE_INTEGER CreationTime;
-       LARGE_INTEGER LastAccessTime;
-       LARGE_INTEGER LastWriteTime;
-       LARGE_INTEGER ChangeTime;
-       ULONG FileAttributes;
-} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
 
-typedef struct _FILE_STANDARD_INFORMATION
-{
-       LARGE_INTEGER AllocationSize;
-       LARGE_INTEGER EndOfFile;
-       ULONG NumberOfLinks;
-       BOOLEAN DeletePending;
-       BOOLEAN Directory;
-} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
 
 typedef struct _FILE_POSITION_INFORMATION
 {
@@ -845,17 +852,6 @@ typedef struct _FILE_END_OF_FILE_INFORMATION
        LARGE_INTEGER EndOfFile;
 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
 
-typedef struct _FILE_NETWORK_OPEN_INFORMATION
-{
-       LARGE_INTEGER CreationTime;
-       LARGE_INTEGER LastAccessTime;
-       LARGE_INTEGER LastWriteTime;
-       LARGE_INTEGER ChangeTime;
-       LARGE_INTEGER AllocationSize;
-       LARGE_INTEGER EndOfFile;
-       ULONG FileAttributes;
-} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
-
 typedef struct _FILE_FULL_EA_INFORMATION
 {
        ULONG NextEntryOffset;
@@ -1102,37 +1098,27 @@ typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
 */
 
 typedef struct _FILE_NOTIFY_INFORMATION {
-       ULONG Action;
-       ULONG FileNameLength;
-       WCHAR FileName[0]; 
-} FILE_NOTIFY_INFORMATION;
+   ULONG NextEntryOffset;
+   ULONG Action;
+   ULONG NameLength;
+   WCHAR Name[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
 
 #define FSCTL_GET_VOLUME_BITMAP                        0x9006F
 #define FSCTL_GET_RETRIEVAL_POINTERS           0x90073
 #define FSCTL_MOVE_FILE                                0x90074
 
-typedef struct _MAPPING_PAIR
-{
-       ULONGLONG       Vcn;
-       ULONGLONG       Lcn;
-} MAPPING_PAIR, *PMAPPING_PAIR;
-
-typedef struct _GET_RETRIEVAL_DESCRIPTOR
-{
-       ULONG           NumberOfPairs;
-       ULONGLONG       StartVcn;
-       MAPPING_PAIR    Pair[0]; // variable size 
-} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
-
-typedef struct _MOVEFILE_DESCRIPTOR
-{
-       HANDLE            FileHandle;
-       ULONG             Reserved;
-       LARGE_INTEGER     StartVcn;
-       LARGE_INTEGER     TargetLcn;
-       ULONG             NumVcns;
-       ULONG             Reserved1;
-} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR;
+/* Structure copied from ntifs.h (Must be in sync!) */
+#include <pshpack8.h>
+typedef struct _RETRIEVAL_POINTERS_BUFFER {
+    ULONG               ExtentCount;
+    LARGE_INTEGER       StartingVcn;
+    struct {
+        LARGE_INTEGER   NextVcn;
+        LARGE_INTEGER   Lcn;
+    } Extents[1];
+} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
+#include <poppack.h>
 
 typedef struct _SECTION_BASIC_INFORMATION
 {
@@ -1229,9 +1215,17 @@ extern IMPORTED ULONG NtBuildNumber;
 #define ProcessSessionInformation              24
 #define ProcessForegroundInformation           25
 #define ProcessWow64Information                        26
-/* ReactOS private. */
 #define ProcessImageFileName                   27
-#define MaxProcessInfoClass                    28
+#define ProcessLUIDDeviceMapsEnabled            28
+#define ProcessBreakOnTermination               29
+#define ProcessDebugObjectHandle                30
+#define ProcessDebugFlags                       31
+#define ProcessHandleTracing                    32
+#define ProcessUnknown33                        33
+#define ProcessUnknown34                        34
+#define ProcessUnknown35                        35
+#define ProcessCookie                           36
+#define MaxProcessInfoClass                     36
 
 /*
  * thread query / set information class
@@ -1273,9 +1267,9 @@ typedef enum _MUTANT_INFORMATION_CLASS
 
 typedef struct _MUTANT_BASIC_INFORMATION
 {
-  LONG Count;
-  BOOLEAN Owned;
-  BOOLEAN Abandoned;
+  LONG CurrentCount;
+  BOOLEAN OwnedByCaller;
+  BOOLEAN AbandonedState;
 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
 
 
@@ -1299,69 +1293,6 @@ struct _SYSTEM_PATH_INFORMATION
 
 } SYSTEM_PATH_INFORMATION, * PSYSTEM_PATH_INFORMATION;
 
-// SystemProcessInformation (5)
-
-#ifndef __USE_W32API
-
-typedef struct _SYSTEM_THREADS {
-       LARGE_INTEGER  KernelTime;
-       LARGE_INTEGER  UserTime;
-       LARGE_INTEGER  CreateTime;
-       ULONG  WaitTime;
-       PVOID  StartAddress;
-       CLIENT_ID  ClientId;
-       KPRIORITY  Priority;
-       KPRIORITY  BasePriority;
-       ULONG  ContextSwitchCount;
-       THREAD_STATE  State;
-       KWAIT_REASON  WaitReason;
-} SYSTEM_THREADS, *PSYSTEM_THREADS;
-
-#endif /* __USE_W32API */
-
-typedef struct _SYSTEM_PROCESSES_NT4
-{
- SIZE_T         NextEntryDelta;
- ULONG          ThreadCount;
- ULONG          Reserved1[6];
- TIME           CreateTime;
- TIME           UserTime;
- TIME           KernelTime;
- UNICODE_STRING ProcessName;
- KPRIORITY      BasePriority;
- ULONG          ProcessId;
- ULONG          InheritedFromProcessId;
- ULONG          HandleCount;
- ULONG          Reserved2[2];
- VM_COUNTERS    VmCounters;
- SYSTEM_THREADS Threads[ANYSIZE_ARRAY];
-} SYSTEM_PROCESSES_NT4, *PSYSTEM_PROCESSES_NT4;
-
-typedef struct _SYSTEM_PROCESSES_NT5
-{
- SIZE_T         NextEntryDelta;
- ULONG          ThreadCount;
- ULONG          Reserved1[6];
- TIME           CreateTime;
- TIME           UserTime;
- TIME           KernelTime;
- UNICODE_STRING ProcessName;
- KPRIORITY      BasePriority;
- ULONG          ProcessId;
- ULONG          InheritedFromProcessId;
- ULONG          HandleCount;
- ULONG          Reserved2[2];
- VM_COUNTERS    VmCounters;
- IO_COUNTERS    IoCounters;
- SYSTEM_THREADS Threads[ANYSIZE_ARRAY];
-} SYSTEM_PROCESSES_NT5, *PSYSTEM_PROCESSES_NT5;
-
-#ifndef __USE_W32API
-
-/* Not sure. What version are we emulating? */
-typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
-
-#endif /* __USE_W32API */
 
 // SystemCallCountInformation (6)
 typedef
@@ -1389,17 +1320,17 @@ struct _SYSTEM_DEVICE_INFORMATION
 // SystemProcessorPerformanceInformation (8)
 // (one per processor in the system)
 typedef
-struct _SYSTEM_PROCESSORTIME_INFO
-{
-       TIME    TotalProcessorRunTime;
-       TIME    TotalProcessorTime;
-       TIME    TotalProcessorUserTime;
-       TIME    TotalDPCTime;
-       TIME    TotalInterruptTime;
-       ULONG   TotalInterrupts;
-       ULONG   Unused;
+struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
+{
+       LARGE_INTEGER   IdleTime;
+       LARGE_INTEGER   KernelTime;
+       LARGE_INTEGER   UserTime;
+       LARGE_INTEGER   DpcTime;
+       LARGE_INTEGER   InterruptTime;
+       ULONG   InterruptCount;
+       ULONG   Reserved;
 
-} SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO;
+} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
 
 // SystemFlagsInformation (9)
 typedef
@@ -1659,11 +1590,27 @@ typedef enum _OBJECT_INFORMATION_CLASS
 
 // directory information
 
-typedef struct _DIRECTORY_BASIC_INFORMATION
+typedef struct _OBJECT_DIRECTORY_INFORMATION
 {
        UNICODE_STRING ObjectName;
        UNICODE_STRING ObjectTypeName; // Directory, Device ...
-} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
+} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
+
+
+/* system battery state */
+typedef struct _SYSTEM_BATTERY_STATE {
+       BOOLEAN  AcOnLine;
+       BOOLEAN  BatteryPresent;
+       BOOLEAN  Charging;
+       BOOLEAN  Discharging;
+       BOOLEAN  Spare1[4];
+       ULONG  MaxCapacity;
+       ULONG  RemainingCapacity;
+       ULONG  Rate;
+       ULONG  EstimatedTime;
+       ULONG  DefaultAlert1;
+       ULONG  DefaultAlert2;
+} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
 
 
 // power information levels
@@ -1704,14 +1651,6 @@ typedef enum _POWER_INFORMATION_LEVEL {
 
 #define        FSCTL_READ_MFT_RECORD                   0x90068 // NTFS only
 
-typedef struct _BITMAP_DESCRIPTOR
-{
-       ULONGLONG       StartLcn;
-       ULONGLONG       ClustersToEndOfVol;
-       BYTE            Map[0]; // variable size
-} BITMAP_DESCRIPTOR, *PBITMAP_DESCRIPTOR;
-
-
 //typedef enum _TIMER_TYPE 
 //{
 //     NotificationTimer,
@@ -1745,7 +1684,7 @@ typedef enum
     LPC_DEBUG_EVENT        = 0x8,
     LPC_ERROR_EVENT        = 0x9,
     LPC_CONNECTION_REQUEST = 0xa,
-    LPC_CONNECTION_REFUSED = 0xb
+    LPC_CONNECTION_REFUSED = 0xb /* ReactOS only */
 
 } LPC_TYPE, *PLPC_TYPE;
 
@@ -1818,13 +1757,17 @@ typedef struct _KINTERRUPT
 {
    ULONG Vector;
    KAFFINITY ProcessorEnableMask;
-   PKSPIN_LOCK IrqLock;
+   KSPIN_LOCK SpinLock;
+   PKSPIN_LOCK ActualLock;
    BOOLEAN Shareable;
    BOOLEAN FloatingSave;
+   CHAR ProcessorNumber;
    PKSERVICE_ROUTINE ServiceRoutine;
    PVOID ServiceContext;
    LIST_ENTRY Entry;
+   KIRQL Irql;
    KIRQL SynchLevel;
+   KINTERRUPT_MODE InterruptMode;
 } KINTERRUPT;
 
 #ifndef __USE_W32API