osmemoryinfo.c
来自「《透视Java》的源码」· C语言 代码 · 共 80 行
C
80 行
/* * 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 + =
减小字号Ctrl + -
显示快捷键?