1 package org.simantics.nativemem.internal;
\r
3 import java.util.Arrays;
\r
4 import java.util.List;
\r
6 import org.simantics.nativemem.ProcessMemoryCounters;
\r
8 import com.sun.jna.Native;
\r
9 import com.sun.jna.Structure;
\r
10 import com.sun.jna.platform.win32.WinNT.HANDLE;
\r
11 import com.sun.jna.win32.StdCallLibrary;
\r
13 public interface Psapi32 extends StdCallLibrary {
\r
15 Psapi32 INSTANCE = (Psapi32) Native.loadLibrary("Psapi", Psapi32.class);
\r
18 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684874%28v=vs.85%29.aspx
\r
20 public static class PROCESS_MEMORY_COUNTERS_EX extends Structure {
\r
22 public int PageFaultCount;
\r
23 public int PeakWorkingSetSize;
\r
24 public int WorkingSetSize;
\r
25 public int QuotaPeakPagedPoolUsage;
\r
26 public int QuotaPagedPoolUsage;
\r
27 public int QuotaPeakNonPagedPoolUsage;
\r
28 public int QuotaNonPagedPoolUsage;
\r
29 public int PagefileUsage;
\r
30 public int PeakPagefileUsage;
\r
31 public int PrivateUsage;
\r
33 @SuppressWarnings("rawtypes")
\r
35 protected List getFieldOrder() {
\r
36 return PROCESS_MEMORY_COUNTERS_EX_FIELDS;
\r
39 static final List<String> PROCESS_MEMORY_COUNTERS_EX_FIELDS = Arrays.asList(new String[] {
\r
40 "cb", "PageFaultCount",
\r
41 "PeakWorkingSetSize", "WorkingSetSize",
\r
42 "QuotaPeakPagedPoolUsage", "QuotaPagedPoolUsage",
\r
43 "QuotaPeakNonPagedPoolUsage", "QuotaNonPagedPoolUsage",
\r
44 "PagefileUsage", "PeakPagefileUsage", "PrivateUsage"
\r
47 public void writeTo(ProcessMemoryCounters to) {
\r
48 to.PageFaultCount = PageFaultCount;
\r
49 to.PeakWorkingSetSize = PeakWorkingSetSize;
\r
50 to.WorkingSetSize = WorkingSetSize;
\r
51 to.QuotaPeakPagedPoolUsage = QuotaPeakPagedPoolUsage;
\r
52 to.QuotaPagedPoolUsage = QuotaPagedPoolUsage;
\r
53 to.QuotaPeakNonPagedPoolUsage = QuotaPeakNonPagedPoolUsage;
\r
54 to.QuotaNonPagedPoolUsage = QuotaNonPagedPoolUsage;
\r
55 to.PagefileUsage = PagefileUsage;
\r
56 to.PeakPagefileUsage = PeakPagefileUsage;
\r
57 to.PrivateUsage = PrivateUsage;
\r
62 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219%28v=vs.85%29.aspx
\r
64 boolean GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS_EX ppsmemCounters, int cb);
\r