summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2019-02-28 06:19:55 -0800
committerGiampaolo Rodola <g.rodola@gmail.com>2019-02-28 06:19:55 -0800
commit4fbc1b4e453312ec7d8de7a0393c76df3a2feb2e (patch)
tree3bcba546eddd379ad4617b6c00945bfb061ebfde
parent5964d6c2fc2a879ad1506085c9631ee0b1cd1fa5 (diff)
downloadpsutil-4fbc1b4e453312ec7d8de7a0393c76df3a2feb2e.tar.gz
set proper SYSTEM_PROCESS_INFORMATION struct from PH
-rw-r--r--psutil/arch/windows/ntextapi.h16
-rw-r--r--psutil/arch/windows/process_info.c2
2 files changed, 10 insertions, 8 deletions
diff --git a/psutil/arch/windows/ntextapi.h b/psutil/arch/windows/ntextapi.h
index 4a351b41..df5cfe11 100644
--- a/psutil/arch/windows/ntextapi.h
+++ b/psutil/arch/windows/ntextapi.h
@@ -283,22 +283,24 @@ typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION {
typedef struct _SYSTEM_PROCESS_INFORMATION2 {
ULONG NextEntryOffset;
ULONG NumberOfThreads;
- LARGE_INTEGER SpareLi1;
- LARGE_INTEGER SpareLi2;
- LARGE_INTEGER SpareLi3;
+ LARGE_INTEGER WorkingSetPrivateSize; // since Vista
+ ULONG HardFaultCount; // since Win7
+ ULONG NumberOfThreadsHighWatermark; // since Win7
+ ULONGLONG CycleTime; // since Win7
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ImageName;
- LONG BasePriority;
+ KPRIORITY BasePriority;
HANDLE UniqueProcessId;
HANDLE InheritedFromUniqueProcessId;
ULONG HandleCount;
ULONG SessionId;
- ULONG_PTR PageDirectoryBase;
+ // since VISTA (requires SystemExtendedProcessInformation)
+ ULONG_PTR UniqueProcessKey;
SIZE_T PeakVirtualSize;
SIZE_T VirtualSize;
- DWORD PageFaultCount;
+ ULONG PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
@@ -314,7 +316,7 @@ typedef struct _SYSTEM_PROCESS_INFORMATION2 {
LARGE_INTEGER ReadTransferCount;
LARGE_INTEGER WriteTransferCount;
LARGE_INTEGER OtherTransferCount;
- SYSTEM_THREAD_INFORMATION Threads[1];
+ SYSTEM_THREAD_INFORMATION Threads[1]; // SystemProcessInformation
} SYSTEM_PROCESS_INFORMATION2, *PSYSTEM_PROCESS_INFORMATION2;
#define SYSTEM_PROCESS_INFORMATION SYSTEM_PROCESS_INFORMATION2
diff --git a/psutil/arch/windows/process_info.c b/psutil/arch/windows/process_info.c
index 3966bc71..22b4ee91 100644
--- a/psutil/arch/windows/process_info.c
+++ b/psutil/arch/windows/process_info.c
@@ -747,7 +747,7 @@ psutil_get_cmdline_data(long pid, WCHAR **pdata, SIZE_T *psize) {
char * cmdline_buffer = NULL;
WCHAR * cmdline_buffer_wchar = NULL;
PUNICODE_STRING tmp = NULL;
- DWORD string_size;
+ size_t string_size;
int ProcessCommandLineInformation = 60;
cmdline_buffer = calloc(ret_length, 1);