⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osmemoryinfo.c

📁 《透视Java》的源码
💻 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 + -