📄 osmemoryinfo.c
字号:
/* * Implementation of native methods that access OS thru Win32 API */#include <windows.h>#include "covertjava_nativecode_OSMemoryInfo.h"JNIEXPORT jlong JNICALL Java_covertjava_nativecode_OSMemoryInfo_getPhysicalTotal (JNIEnv *env, jclass cls){ MEMORYSTATUSEX memStat; memStat.dwLength = sizeof (memStat); if (GlobalMemoryStatusEx(&memStat) == 0 && (*env) != 0) { jclass exceptionCls = (*env)->FindClass(env, "java/lang/Exception"); char msg[100]; sprintf(msg, "Failed to get memory information from the OS, error code %li", (long)GetLastError()); if (exceptionCls != 0) /* Raise Java exception */ (*env)->ThrowNew(env, exceptionCls, msg); return -1; } return (jlong) (int) memStat.ullTotalPhys;}JNIEXPORT jlong JNICALL Java_covertjava_nativecode_OSMemoryInfo_getPhysicalAvail (JNIEnv *env, jclass cls){ MEMORYSTATUSEX memStat; memStat.dwLength = sizeof (memStat); if (GlobalMemoryStatusEx(&memStat) == 0 && (*env) != 0) { jclass exceptionCls = (*env)->FindClass(env, "java/lang/Exception"); char msg[100]; sprintf(msg, "Failed to get memory information from the OS, error code %li", (long)GetLastError()); if (exceptionCls != 0) /* Raise Java exception */ (*env)->ThrowNew(env, exceptionCls, msg); return -1; } return (jlong) (int) memStat.ullAvailPhys;}JNIEXPORT jlong JNICALL Java_covertjava_nativecode_OSMemoryInfo_getVirtualTotal (JNIEnv *env, jclass cls){ MEMORYSTATUSEX memStat; memStat.dwLength = sizeof (memStat); if (GlobalMemoryStatusEx(&memStat) == 0 && (*env) != 0) { jclass exceptionCls = (*env)->FindClass(env, "java/lang/Exception"); char msg[100]; sprintf(msg, "Failed to get memory information from the OS, error code %li", (long)GetLastError()); if (exceptionCls != 0) /* Raise Java exception */ (*env)->ThrowNew(env, exceptionCls, msg); return -1; } return (jlong) (int) memStat.ullTotalVirtual;}JNIEXPORT jlong JNICALL Java_covertjava_nativecode_OSMemoryInfo_getVirtualAvail (JNIEnv *env, jclass cls){ MEMORYSTATUSEX memStat; memStat.dwLength = sizeof (memStat); if (GlobalMemoryStatusEx(&memStat) == 0 && (*env) != 0) { jclass exceptionCls = (*env)->FindClass(env, "java/lang/Exception"); char msg[100]; sprintf(msg, "Failed to get memory information from the OS, error code %li", (long)GetLastError()); if (exceptionCls != 0) /* Raise Java exception */ (*env)->ThrowNew(env, exceptionCls, msg); return -1; } return (jlong) (int) memStat.ullAvailVirtual;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -