]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.nativemem/src/org/simantics/nativemem/internal/Psapi64.java b/bundles/org.simantics.nativemem/src/org/simantics/nativemem/internal/Psapi64.java
new file mode 100644 (file)
index 0000000..ba58251
--- /dev/null
@@ -0,0 +1,66 @@
+package org.simantics.nativemem.internal;\r
+\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import org.simantics.nativemem.ProcessMemoryCounters;\r
+\r
+import com.sun.jna.Native;\r
+import com.sun.jna.Structure;\r
+import com.sun.jna.platform.win32.WinNT.HANDLE;\r
+import com.sun.jna.win32.StdCallLibrary;\r
+\r
+public interface Psapi64 extends StdCallLibrary {\r
+\r
+    Psapi64 INSTANCE = (Psapi64) Native.loadLibrary("Psapi", Psapi64.class);\r
+\r
+    /*\r
+     * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684874%28v=vs.85%29.aspx\r
+     */\r
+    public static class PROCESS_MEMORY_COUNTERS_EX extends Structure {\r
+        public int cb;\r
+        public int PageFaultCount;\r
+        public long PeakWorkingSetSize;\r
+        public long WorkingSetSize;\r
+        public long QuotaPeakPagedPoolUsage;\r
+        public long QuotaPagedPoolUsage;\r
+        public long QuotaPeakNonPagedPoolUsage;\r
+        public long QuotaNonPagedPoolUsage;\r
+        public long PagefileUsage;\r
+        public long PeakPagefileUsage;\r
+        public long PrivateUsage;\r
+\r
+        @SuppressWarnings("rawtypes")\r
+        @Override\r
+        protected List getFieldOrder() {\r
+            return PROCESS_MEMORY_COUNTERS_EX_FIELDS;\r
+        }\r
+\r
+        private static final List<String> PROCESS_MEMORY_COUNTERS_EX_FIELDS = Arrays.asList(new String[] { \r
+                "cb", "PageFaultCount",\r
+                "PeakWorkingSetSize", "WorkingSetSize",\r
+                "QuotaPeakPagedPoolUsage", "QuotaPagedPoolUsage",\r
+                "QuotaPeakNonPagedPoolUsage", "QuotaNonPagedPoolUsage",\r
+                "PagefileUsage", "PeakPagefileUsage", "PrivateUsage"\r
+        });\r
+\r
+        public void writeTo(ProcessMemoryCounters to) {\r
+            to.PageFaultCount = PageFaultCount;\r
+            to.PeakWorkingSetSize = PeakWorkingSetSize;\r
+            to.WorkingSetSize = WorkingSetSize;\r
+            to.QuotaPeakPagedPoolUsage = QuotaPeakPagedPoolUsage;\r
+            to.QuotaPagedPoolUsage = QuotaPagedPoolUsage;\r
+            to.QuotaPeakNonPagedPoolUsage = QuotaPeakNonPagedPoolUsage;\r
+            to.QuotaNonPagedPoolUsage = QuotaNonPagedPoolUsage;\r
+            to.PagefileUsage = PagefileUsage;\r
+            to.PeakPagefileUsage = PeakPagefileUsage;\r
+            to.PrivateUsage = PrivateUsage;\r
+        }\r
+    }\r
+\r
+    /*\r
+     * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219%28v=vs.85%29.aspx\r
+     */\r
+    boolean GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS_EX ppsmemCounters, int cb);\r
+\r
+}
\ No newline at end of file