mirror of https://github.com/BOINC/boinc.git
- Get memory measurements to work on Win64.
The format of a process descriptor had changed a little, and the format of the VM stats part was completely changed. I had to reverse engineer it - very unpleasant. lib/ diagnostics_sin.h procinfo.h svn path=/trunk/boinc/; revision=12804
This commit is contained in:
parent
acf10435c9
commit
60f3e05410
|
@ -5672,3 +5672,13 @@ Rom 1 June 2007
|
||||||
win_build/installerv2/redist/Windows/x64/
|
win_build/installerv2/redist/Windows/x64/
|
||||||
boinccas.dll
|
boinccas.dll
|
||||||
boinccas95.dll
|
boinccas95.dll
|
||||||
|
|
||||||
|
David 1 June 2007
|
||||||
|
- Get memory measurements to work on Win64.
|
||||||
|
The format of a process descriptor had changed a little,
|
||||||
|
and the format of the VM stats part was completely changed.
|
||||||
|
I had to reverse engineer it - very unpleasant.
|
||||||
|
|
||||||
|
lib/
|
||||||
|
diagnostics_sin.h
|
||||||
|
procinfo.h
|
|
@ -40,6 +40,20 @@ typedef struct _UNICODE_STRING {
|
||||||
} UNICODE_STRING;
|
} UNICODE_STRING;
|
||||||
|
|
||||||
typedef struct _VM_COUNTERS {
|
typedef struct _VM_COUNTERS {
|
||||||
|
#ifdef _WIN64
|
||||||
|
// the following was inferred by painful reverse engineering
|
||||||
|
SIZE_T PeakVirtualSize; // not actually
|
||||||
|
SIZE_T PageFaultCount;
|
||||||
|
SIZE_T PeakWorkingSetSize;
|
||||||
|
SIZE_T WorkingSetSize;
|
||||||
|
SIZE_T QuotaPeakPagedPoolUsage;
|
||||||
|
SIZE_T QuotaPagedPoolUsage;
|
||||||
|
SIZE_T QuotaPeakNonPagedPoolUsage;
|
||||||
|
SIZE_T QuotaNonPagedPoolUsage;
|
||||||
|
SIZE_T PagefileUsage;
|
||||||
|
SIZE_T PeakPagefileUsage;
|
||||||
|
SIZE_T VirtualSize; // not actually
|
||||||
|
#else
|
||||||
SIZE_T PeakVirtualSize;
|
SIZE_T PeakVirtualSize;
|
||||||
SIZE_T VirtualSize;
|
SIZE_T VirtualSize;
|
||||||
ULONG PageFaultCount;
|
ULONG PageFaultCount;
|
||||||
|
@ -51,6 +65,7 @@ typedef struct _VM_COUNTERS {
|
||||||
SIZE_T QuotaNonPagedPoolUsage;
|
SIZE_T QuotaNonPagedPoolUsage;
|
||||||
SIZE_T PagefileUsage;
|
SIZE_T PagefileUsage;
|
||||||
SIZE_T PeakPagefileUsage;
|
SIZE_T PeakPagefileUsage;
|
||||||
|
#endif
|
||||||
} VM_COUNTERS;
|
} VM_COUNTERS;
|
||||||
|
|
||||||
typedef struct _SYSTEM_THREADS {
|
typedef struct _SYSTEM_THREADS {
|
||||||
|
@ -93,8 +108,16 @@ typedef struct _SYSTEM_PROCESSES {
|
||||||
LARGE_INTEGER KernelTime;
|
LARGE_INTEGER KernelTime;
|
||||||
UNICODE_STRING ProcessName;
|
UNICODE_STRING ProcessName;
|
||||||
KPRIORITY BasePriority;
|
KPRIORITY BasePriority;
|
||||||
|
#ifdef _WIN64
|
||||||
|
ULONG pad1;
|
||||||
|
ULONG ProcessId;
|
||||||
|
ULONG pad2;
|
||||||
|
ULONG InheritedFromProcessId;
|
||||||
|
ULONG pad3, pad4, pad5;
|
||||||
|
#else
|
||||||
ULONG ProcessId;
|
ULONG ProcessId;
|
||||||
ULONG InheritedFromProcessId;
|
ULONG InheritedFromProcessId;
|
||||||
|
#endif
|
||||||
ULONG HandleCount;
|
ULONG HandleCount;
|
||||||
ULONG Reserved2[2];
|
ULONG Reserved2[2];
|
||||||
VM_COUNTERS VmCounters;
|
VM_COUNTERS VmCounters;
|
||||||
|
|
|
@ -62,6 +62,15 @@ int get_procinfo_XP(vector<PROCINFO>& pi) {
|
||||||
ULONG cbBuffer = 128*1024; // 128k initial buffer
|
ULONG cbBuffer = 128*1024; // 128k initial buffer
|
||||||
PVOID pBuffer = NULL;
|
PVOID pBuffer = NULL;
|
||||||
PSYSTEM_PROCESSES pProcesses = NULL;
|
PSYSTEM_PROCESSES pProcesses = NULL;
|
||||||
|
#if 0
|
||||||
|
printf("FILETIME: %d\n", sizeof(FILETIME));
|
||||||
|
printf("LARGE_INTEGER: %d\n", sizeof(LARGE_INTEGER));
|
||||||
|
printf("DWORD: %d\n", sizeof(DWORD));
|
||||||
|
printf("UNICODE_STRING: %d\n", sizeof(UNICODE_STRING));
|
||||||
|
printf("KPRIORITY: %d\n", sizeof(KPRIORITY));
|
||||||
|
printf("ULONG: %d\n", sizeof(ULONG));
|
||||||
|
printf("SIZE_T: %d\n", sizeof(SIZE_T));
|
||||||
|
#endif
|
||||||
|
|
||||||
get_process_information(&pBuffer, &cbBuffer);
|
get_process_information(&pBuffer, &cbBuffer);
|
||||||
pProcesses = (PSYSTEM_PROCESSES)pBuffer;
|
pProcesses = (PSYSTEM_PROCESSES)pBuffer;
|
||||||
|
@ -78,7 +87,6 @@ int get_procinfo_XP(vector<PROCINFO>& pi) {
|
||||||
p.parentid = pProcesses->InheritedFromProcessId;
|
p.parentid = pProcesses->InheritedFromProcessId;
|
||||||
p.is_boinc_app = false;
|
p.is_boinc_app = false;
|
||||||
pi.push_back(p);
|
pi.push_back(p);
|
||||||
|
|
||||||
if (!pProcesses->NextEntryDelta) {
|
if (!pProcesses->NextEntryDelta) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue