mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
Fix Process/Thread information structures to match Windows 2000 and have proper structure. Fix bug in ntdll related to OpenProcess
svn path=/trunk/; revision=14674
This commit is contained in:
parent
db6c8885b6
commit
5817ae7a54
5 changed files with 147 additions and 206 deletions
|
@ -32,10 +32,10 @@
|
||||||
/* OBJECTS */
|
/* OBJECTS */
|
||||||
|
|
||||||
/* TYPES */
|
/* TYPES */
|
||||||
typedef NTSTATUS (NTAPI *PPROC_ENUM_ROUTINE)(IN PSYSTEM_PROCESSES CurrentProcess,
|
typedef NTSTATUS (NTAPI *PPROC_ENUM_ROUTINE)(IN PSYSTEM_PROCESS_INFORMATION CurrentProcess,
|
||||||
IN OUT PVOID CallbackContext);
|
IN OUT PVOID CallbackContext);
|
||||||
|
|
||||||
typedef NTSTATUS (NTAPI *PTHREAD_ENUM_ROUTINE)(IN PSYSTEM_THREADS CurrentThread,
|
typedef NTSTATUS (NTAPI *PTHREAD_ENUM_ROUTINE)(IN PSYSTEM_THREAD_INFORMATION CurrentThread,
|
||||||
IN OUT PVOID CallbackContext);
|
IN OUT PVOID CallbackContext);
|
||||||
|
|
||||||
typedef NTSTATUS (NTAPI *PSYSMOD_ENUM_ROUTINE)(IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule,
|
typedef NTSTATUS (NTAPI *PSYSMOD_ENUM_ROUTINE)(IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule,
|
||||||
|
@ -67,36 +67,36 @@ PsaEnumerateThreads(IN PTHREAD_ENUM_ROUTINE Callback,
|
||||||
|
|
||||||
/* capturing & walking */
|
/* capturing & walking */
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
PsaCaptureProcessesAndThreads(OUT PSYSTEM_PROCESSES * ProcessesAndThreads);
|
PsaCaptureProcessesAndThreads(OUT PSYSTEM_PROCESS_INFORMATION * ProcessesAndThreads);
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
PsaWalkProcessesAndThreads(IN PSYSTEM_PROCESSES ProcessesAndThreads,
|
PsaWalkProcessesAndThreads(IN PSYSTEM_PROCESS_INFORMATION ProcessesAndThreads,
|
||||||
IN PPROC_ENUM_ROUTINE ProcessCallback,
|
IN PPROC_ENUM_ROUTINE ProcessCallback,
|
||||||
IN OUT PVOID ProcessCallbackContext,
|
IN OUT PVOID ProcessCallbackContext,
|
||||||
IN PTHREAD_ENUM_ROUTINE ThreadCallback,
|
IN PTHREAD_ENUM_ROUTINE ThreadCallback,
|
||||||
IN OUT PVOID ThreadCallbackContext);
|
IN OUT PVOID ThreadCallbackContext);
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
PsaWalkProcesses(IN PSYSTEM_PROCESSES ProcessesAndThreads,
|
PsaWalkProcesses(IN PSYSTEM_PROCESS_INFORMATION ProcessesAndThreads,
|
||||||
IN PPROC_ENUM_ROUTINE Callback,
|
IN PPROC_ENUM_ROUTINE Callback,
|
||||||
IN OUT PVOID CallbackContext);
|
IN OUT PVOID CallbackContext);
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
PsaWalkThreads(IN PSYSTEM_PROCESSES ProcessesAndThreads,
|
PsaWalkThreads(IN PSYSTEM_PROCESS_INFORMATION ProcessesAndThreads,
|
||||||
IN PTHREAD_ENUM_ROUTINE Callback,
|
IN PTHREAD_ENUM_ROUTINE Callback,
|
||||||
IN OUT PVOID CallbackContext);
|
IN OUT PVOID CallbackContext);
|
||||||
|
|
||||||
PSYSTEM_PROCESSES FASTCALL
|
PSYSTEM_PROCESS_INFORMATION FASTCALL
|
||||||
PsaWalkFirstProcess(IN PSYSTEM_PROCESSES ProcessesAndThreads);
|
PsaWalkFirstProcess(IN PSYSTEM_PROCESS_INFORMATION ProcessesAndThreads);
|
||||||
|
|
||||||
PSYSTEM_PROCESSES FASTCALL
|
PSYSTEM_PROCESS_INFORMATION FASTCALL
|
||||||
PsaWalkNextProcess(IN PSYSTEM_PROCESSES CurrentProcess);
|
PsaWalkNextProcess(IN PSYSTEM_PROCESS_INFORMATION CurrentProcess);
|
||||||
|
|
||||||
PSYSTEM_THREADS FASTCALL
|
PSYSTEM_THREAD_INFORMATION FASTCALL
|
||||||
PsaWalkFirstThread(IN PSYSTEM_PROCESSES CurrentProcess);
|
PsaWalkFirstThread(IN PSYSTEM_PROCESS_INFORMATION CurrentProcess);
|
||||||
|
|
||||||
PSYSTEM_THREADS FASTCALL
|
PSYSTEM_THREAD_INFORMATION FASTCALL
|
||||||
PsaWalkNextThread(IN PSYSTEM_THREADS CurrentThread);
|
PsaWalkNextThread(IN PSYSTEM_THREAD_INFORMATION CurrentThread);
|
||||||
|
|
||||||
/* System modules */
|
/* System modules */
|
||||||
/* enumeration */
|
/* enumeration */
|
||||||
|
|
|
@ -326,53 +326,73 @@ typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
|
||||||
ULONG SystemCalls;
|
ULONG SystemCalls;
|
||||||
} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
|
} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
|
||||||
|
|
||||||
|
#ifndef __USE_W32API
|
||||||
|
|
||||||
// SystemProcessThreadInfo (5)
|
// SystemProcessThreadInfo (5)
|
||||||
typedef struct _SYSTEM_THREAD_INFORMATION
|
typedef struct _SYSTEM_THREAD_INFORMATION
|
||||||
{
|
{
|
||||||
TIME KernelTime;
|
LARGE_INTEGER KernelTime;
|
||||||
TIME UserTime;
|
LARGE_INTEGER UserTime;
|
||||||
TIME CreateTime;
|
LARGE_INTEGER CreateTime;
|
||||||
ULONG WaitTime;
|
ULONG WaitTime;
|
||||||
PVOID StartAddress;
|
PVOID StartAddress;
|
||||||
CLIENT_ID ClientId;
|
CLIENT_ID ClientId;
|
||||||
KPRIORITY Priority;
|
KPRIORITY Priority;
|
||||||
LONG BasePriority;
|
LONG BasePriority;
|
||||||
ULONG ContextSwitches;
|
ULONG ContextSwitches;
|
||||||
LONG ThreadState;
|
ULONG ThreadState;
|
||||||
KWAIT_REASON WaitReason;
|
ULONG WaitReason;
|
||||||
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
||||||
|
|
||||||
typedef struct SYSTEM_PROCESS_INFORMATION
|
typedef struct _SYSTEM_PROCESS_INFORMATION
|
||||||
{
|
{
|
||||||
ULONG NextEntryOffset;
|
ULONG NextEntryOffset;
|
||||||
ULONG NumberOfThreads;
|
ULONG NumberOfThreads;
|
||||||
LARGE_INTEGER SpareLi1;
|
LARGE_INTEGER SpareLi1;
|
||||||
LARGE_INTEGER SpareLi2;
|
LARGE_INTEGER SpareLi2;
|
||||||
LARGE_INTEGER SpareLi3;
|
LARGE_INTEGER SpareLi3;
|
||||||
TIME CreateTime;
|
LARGE_INTEGER CreateTime;
|
||||||
TIME UserTime;
|
LARGE_INTEGER UserTime;
|
||||||
TIME KernelTime;
|
LARGE_INTEGER KernelTime;
|
||||||
UNICODE_STRING ImageName;
|
UNICODE_STRING ImageName;
|
||||||
ULONG BasePriority;
|
KPRIORITY BasePriority;
|
||||||
HANDLE UniqueProcessId;
|
HANDLE UniqueProcessId;
|
||||||
HANDLE InheritedFromUniqueProcessId;
|
HANDLE InheritedFromUniqueProcessId;
|
||||||
ULONG HandleCount;
|
ULONG HandleCount;
|
||||||
ULONG SessionId;
|
ULONG SessionId;
|
||||||
ULONG SpareUl3;
|
ULONG PageDirectoryFrame;
|
||||||
ULONG PeakVirtualSize;
|
|
||||||
ULONG VirtualSize;
|
/*
|
||||||
ULONG PageFaultCount;
|
* This part corresponds to VM_COUNTERS_EX.
|
||||||
ULONG PeakWorkingSetSize;
|
* NOTE: *NOT* THE SAME AS VM_COUNTERS!
|
||||||
ULONG WorkingSetSize;
|
*/
|
||||||
ULONG QuotaPeakPagedPoolUsage;
|
ULONG PeakVirtualSize;
|
||||||
ULONG QuotaPagedPoolUsage;
|
ULONG VirtualSize;
|
||||||
ULONG QuotaPeakNonPagedPoolUsage;
|
ULONG PageFaultCount;
|
||||||
ULONG QuotaNonPagedPoolUsage;
|
ULONG PeakWorkingSetSize;
|
||||||
ULONG PagefileUsage;
|
ULONG WorkingSetSize;
|
||||||
ULONG PeakPagefileUsage;
|
ULONG QuotaPeakPagedPoolUsage;
|
||||||
ULONG PrivatePageCount;
|
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;
|
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// SystemModuleInformation (11)
|
// SystemModuleInformation (11)
|
||||||
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
|
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
|
||||||
ULONG Unknown1;
|
ULONG Unknown1;
|
||||||
|
@ -1300,69 +1320,6 @@ struct _SYSTEM_PATH_INFORMATION
|
||||||
|
|
||||||
} SYSTEM_PATH_INFORMATION, * PSYSTEM_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;
|
|
||||||
ULONG State;
|
|
||||||
KWAIT_REASON WaitReason;
|
|
||||||
} SYSTEM_THREADS, *PSYSTEM_THREADS;
|
|
||||||
|
|
||||||
#endif /* __USE_W32API */
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_PROCESSES_NT4
|
|
||||||
{
|
|
||||||
SIZE_T NextEntryDelta;
|
|
||||||
ULONG ThreadCount;
|
|
||||||
ULONG Reserved1[6];
|
|
||||||
LARGE_INTEGER CreateTime;
|
|
||||||
LARGE_INTEGER UserTime;
|
|
||||||
LARGE_INTEGER KernelTime;
|
|
||||||
UNICODE_STRING ProcessName;
|
|
||||||
KPRIORITY BasePriority;
|
|
||||||
HANDLE ProcessId;
|
|
||||||
HANDLE 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];
|
|
||||||
LARGE_INTEGER CreateTime;
|
|
||||||
LARGE_INTEGER UserTime;
|
|
||||||
LARGE_INTEGER KernelTime;
|
|
||||||
UNICODE_STRING ProcessName;
|
|
||||||
KPRIORITY BasePriority;
|
|
||||||
HANDLE ProcessId;
|
|
||||||
HANDLE 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)
|
// SystemCallCountInformation (6)
|
||||||
typedef
|
typedef
|
||||||
|
|
|
@ -349,14 +349,13 @@ else
|
||||||
|
|
||||||
Buf->Unknown[0] = (ULONG)NtCurrentProcess();
|
Buf->Unknown[0] = (ULONG)NtCurrentProcess();
|
||||||
|
|
||||||
ClientId.UniqueThread = INVALID_HANDLE_VALUE;
|
ClientId.UniqueThread = 0;
|
||||||
ClientId.UniqueProcess = (HANDLE)ProcessId;
|
ClientId.UniqueProcess = (HANDLE)ProcessId;
|
||||||
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
|
InitializeObjectAttributes(&ObjectAttributes,
|
||||||
ObjectAttributes.RootDirectory = (HANDLE)NULL;
|
NULL,
|
||||||
ObjectAttributes.SecurityDescriptor = NULL;
|
0,
|
||||||
ObjectAttributes.SecurityQualityOfService = NULL;
|
NULL,
|
||||||
ObjectAttributes.ObjectName = NULL;
|
NULL);
|
||||||
ObjectAttributes.Attributes = 0;
|
|
||||||
|
|
||||||
Status = NtOpenProcess( &hProcess,
|
Status = NtOpenProcess( &hProcess,
|
||||||
(PROCESS_ALL_ACCESS),
|
(PROCESS_ALL_ACCESS),
|
||||||
|
|
|
@ -71,7 +71,7 @@ typedef struct _ENUM_PROCESSES_CONTEXT
|
||||||
} ENUM_PROCESSES_CONTEXT, *PENUM_PROCESSES_CONTEXT;
|
} ENUM_PROCESSES_CONTEXT, *PENUM_PROCESSES_CONTEXT;
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
EnumProcessesCallback(IN PSYSTEM_PROCESSES CurrentProcess,
|
EnumProcessesCallback(IN PSYSTEM_PROCESS_INFORMATION CurrentProcess,
|
||||||
IN OUT PVOID CallbackContext)
|
IN OUT PVOID CallbackContext)
|
||||||
{
|
{
|
||||||
PENUM_PROCESSES_CONTEXT Context = (PENUM_PROCESSES_CONTEXT)CallbackContext;
|
PENUM_PROCESSES_CONTEXT Context = (PENUM_PROCESSES_CONTEXT)CallbackContext;
|
||||||
|
@ -83,7 +83,7 @@ EnumProcessesCallback(IN PSYSTEM_PROCESSES CurrentProcess,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return current process */
|
/* return current process */
|
||||||
*Context->lpidProcess = (DWORD)CurrentProcess->ProcessId;
|
*Context->lpidProcess = (DWORD)CurrentProcess->UniqueProcessId;
|
||||||
|
|
||||||
/* go to next array slot */
|
/* go to next array slot */
|
||||||
Context->lpidProcess++;
|
Context->lpidProcess++;
|
||||||
|
|
|
@ -264,48 +264,16 @@ typedef struct _VM_COUNTERS {
|
||||||
} VM_COUNTERS;
|
} VM_COUNTERS;
|
||||||
|
|
||||||
typedef enum _THREAD_STATE {
|
typedef enum _THREAD_STATE {
|
||||||
StateInitialized,
|
Initialized,
|
||||||
StateReady,
|
Ready,
|
||||||
StateRunning,
|
Running,
|
||||||
StateStandby,
|
Standby,
|
||||||
StateTerminated,
|
Terminated,
|
||||||
StateWait,
|
Wait,
|
||||||
StateTransition,
|
Transition,
|
||||||
StateUnknown
|
DeferredReady
|
||||||
} THREAD_STATE;
|
} THREAD_STATE;
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_PROCESSES {
|
|
||||||
ULONG NextEntryDelta;
|
|
||||||
ULONG ThreadCount;
|
|
||||||
ULONG Reserved1[6];
|
|
||||||
LARGE_INTEGER CreateTime;
|
|
||||||
LARGE_INTEGER UserTime;
|
|
||||||
LARGE_INTEGER KernelTime;
|
|
||||||
UNICODE_STRING ProcessName;
|
|
||||||
KPRIORITY BasePriority;
|
|
||||||
HANDLE ProcessId;
|
|
||||||
HANDLE InheritedFromProcessId;
|
|
||||||
ULONG HandleCount;
|
|
||||||
ULONG Reserved2[2];
|
|
||||||
VM_COUNTERS VmCounters;
|
|
||||||
IO_COUNTERS IoCounters;
|
|
||||||
SYSTEM_THREADS Threads[1];
|
|
||||||
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
|
|
||||||
|
|
||||||
typedef struct _SYSTEM_CALLS_INFORMATION {
|
typedef struct _SYSTEM_CALLS_INFORMATION {
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
ULONG NumberOfDescriptorTables;
|
ULONG NumberOfDescriptorTables;
|
||||||
|
@ -659,50 +627,67 @@ typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION {
|
||||||
SYSTEM_MEMORY_USAGE MemoryUsage[1];
|
SYSTEM_MEMORY_USAGE MemoryUsage[1];
|
||||||
} SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION;
|
} SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION;
|
||||||
|
|
||||||
|
// SystemProcessThreadInfo (5)
|
||||||
typedef struct _SYSTEM_THREAD_INFORMATION
|
typedef struct _SYSTEM_THREAD_INFORMATION
|
||||||
{
|
{
|
||||||
LARGE_INTEGER KernelTime;
|
LARGE_INTEGER KernelTime;
|
||||||
LARGE_INTEGER UserTime;
|
LARGE_INTEGER UserTime;
|
||||||
LARGE_INTEGER CreateTime;
|
LARGE_INTEGER CreateTime;
|
||||||
ULONG WaitTime;
|
ULONG WaitTime;
|
||||||
PVOID StartAddress;
|
PVOID StartAddress;
|
||||||
CLIENT_ID ClientId;
|
CLIENT_ID ClientId;
|
||||||
KPRIORITY Priority;
|
KPRIORITY Priority;
|
||||||
LONG BasePriority;
|
LONG BasePriority;
|
||||||
ULONG ContextSwitches;
|
ULONG ContextSwitches;
|
||||||
ULONG ThreadState;
|
ULONG ThreadState;
|
||||||
KWAIT_REASON WaitReason;
|
ULONG WaitReason;
|
||||||
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
||||||
|
|
||||||
typedef struct SYSTEM_PROCESS_INFORMATION
|
typedef struct _SYSTEM_PROCESS_INFORMATION
|
||||||
{
|
{
|
||||||
ULONG NextEntryOffset;
|
ULONG NextEntryOffset;
|
||||||
ULONG NumberOfThreads;
|
ULONG NumberOfThreads;
|
||||||
LARGE_INTEGER SpareLi1;
|
LARGE_INTEGER SpareLi1;
|
||||||
LARGE_INTEGER SpareLi2;
|
LARGE_INTEGER SpareLi2;
|
||||||
LARGE_INTEGER SpareLi3;
|
LARGE_INTEGER SpareLi3;
|
||||||
LARGE_INTEGER CreateTime;
|
LARGE_INTEGER CreateTime;
|
||||||
LARGE_INTEGER UserTime;
|
LARGE_INTEGER UserTime;
|
||||||
LARGE_INTEGER KernelTime;
|
LARGE_INTEGER KernelTime;
|
||||||
UNICODE_STRING ImageName;
|
UNICODE_STRING ImageName;
|
||||||
ULONG BasePriority;
|
KPRIORITY BasePriority;
|
||||||
HANDLE UniqueProcessId;
|
HANDLE UniqueProcessId;
|
||||||
HANDLE InheritedFromUniqueProcessId;
|
HANDLE InheritedFromUniqueProcessId;
|
||||||
ULONG HandleCount;
|
ULONG HandleCount;
|
||||||
ULONG SessionId;
|
ULONG SessionId;
|
||||||
ULONG SpareUl3;
|
ULONG PageDirectoryFrame;
|
||||||
ULONG PeakVirtualSize;
|
|
||||||
ULONG VirtualSize;
|
/*
|
||||||
ULONG PageFaultCount;
|
* This part corresponds to VM_COUNTERS_EX.
|
||||||
ULONG PeakWorkingSetSize;
|
* NOTE: *NOT* THE SAME AS VM_COUNTERS!
|
||||||
ULONG WorkingSetSize;
|
*/
|
||||||
ULONG QuotaPeakPagedPoolUsage;
|
ULONG PeakVirtualSize;
|
||||||
ULONG QuotaPagedPoolUsage;
|
ULONG VirtualSize;
|
||||||
ULONG QuotaPeakNonPagedPoolUsage;
|
ULONG PageFaultCount;
|
||||||
ULONG QuotaNonPagedPoolUsage;
|
ULONG PeakWorkingSetSize;
|
||||||
ULONG PagefileUsage;
|
ULONG WorkingSetSize;
|
||||||
ULONG PeakPagefileUsage;
|
ULONG QuotaPeakPagedPoolUsage;
|
||||||
ULONG PrivatePageCount;
|
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;
|
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
|
||||||
|
|
||||||
NTOSAPI
|
NTOSAPI
|
||||||
|
|
Loading…
Reference in a new issue