]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.nativemem/src/org/simantics/nativemem/internal/Psapi64.java
Tycho compilation changes for SVN version also.
[simantics/platform.git] / bundles / org.simantics.nativemem / src / org / simantics / nativemem / internal / Psapi64.java
1 package org.simantics.nativemem.internal;\r
2 \r
3 import java.util.Arrays;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.nativemem.ProcessMemoryCounters;\r
7 \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
12 \r
13 public interface Psapi64 extends StdCallLibrary {\r
14 \r
15     Psapi64 INSTANCE = (Psapi64) Native.loadLibrary("Psapi", Psapi64.class);\r
16 \r
17     /*\r
18      * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684874%28v=vs.85%29.aspx\r
19      */\r
20     public static class PROCESS_MEMORY_COUNTERS_EX extends Structure {\r
21         public int cb;\r
22         public int PageFaultCount;\r
23         public long PeakWorkingSetSize;\r
24         public long WorkingSetSize;\r
25         public long QuotaPeakPagedPoolUsage;\r
26         public long QuotaPagedPoolUsage;\r
27         public long QuotaPeakNonPagedPoolUsage;\r
28         public long QuotaNonPagedPoolUsage;\r
29         public long PagefileUsage;\r
30         public long PeakPagefileUsage;\r
31         public long PrivateUsage;\r
32 \r
33         @SuppressWarnings("rawtypes")\r
34         @Override\r
35         protected List getFieldOrder() {\r
36             return PROCESS_MEMORY_COUNTERS_EX_FIELDS;\r
37         }\r
38 \r
39         private 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
45         });\r
46 \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
58         }\r
59     }\r
60 \r
61     /*\r
62      * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219%28v=vs.85%29.aspx\r
63      */\r
64     boolean GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS_EX ppsmemCounters, int cb);\r
65 \r
66 }