/* * MemoryStatus class native methods C implementations * Copyright Yoon Kyung Koo, All rights reserved. * @author Yoon Kyung Koo */ #include #include "MemoryStatus.h" /* * Class: MemoryStatus * Method: getAvailVirtual * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getAvailVirtual (JNIEnv * env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwAvailVirtual; } /* * Class: MemoryStatus * Method: getTotalVirtual * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getTotalVirtual (JNIEnv * env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwTotalVirtual; } /* * Class: MemoryStatus * Method: getAvailPageFile * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getAvailPageFile (JNIEnv *env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwAvailPageFile; } /* * Class: MemoryStatus * Method: getAvailPhysical * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getAvailPhysical (JNIEnv *env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwAvailPhys; } /* * Class: MemoryStatus * Method: getDiskFreeSpace * Signature: (Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getDiskFreeSpace (JNIEnv * env, jobject obj, jstring string) { int a, b, c, d; jchar *chars = (*env)->GetStringUTFChars(env, string, JNI_FALSE /* no copy */); GetDiskFreeSpace((char *)chars, &a, &b, &c, &d); printf("disk free chars : %s\n", chars); (*env)->ReleaseStringUTFChars(env, string, chars); return (jlong) a*b*c; } /* * Class: MemoryStatus * Method: getTotalPageFile * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getTotalPageFile (JNIEnv *env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwTotalPageFile; } /* * Class: MemoryStatus * Method: getTotalPhysical * Signature: ()J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getTotalPhysical (JNIEnv *env, jobject obj) { MEMORYSTATUS memStat; GlobalMemoryStatus(&memStat); return (jlong) (int) memStat.dwTotalPhys; } /* * Class: MemoryStatus * Method: getDiskTotalSpace * Signature: (Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_MemoryStatus_getDiskTotalSpace (JNIEnv * env, jobject obj, jstring string) { int a, b, c, d; jchar *chars = (*env)->GetStringUTFChars(env, string, JNI_FALSE /* no copy */); GetDiskFreeSpace((char *)chars, &a, &b, &c, &d); printf("disk total chars : %s\n", chars); (*env)->ReleaseStringUTFChars(env, string, chars); return (jlong) a*b*d; } /* * Class: MemoryStatus * Method: getDiskFreeSpaceInKSC * Signature: (Ljava/lang/String;)[B */ JNIEXPORT jbyteArray JNICALL Java_MemoryStatus_getDiskFreeSpaceInKSC (JNIEnv * env, jobject obj, jstring string) { int a, b, c, d, length; char buffer[100]; jbyteArray bytes; jchar * chars; chars = (*env)->GetStringUTFChars(env, string, JNI_FALSE /* no copy */); GetDiskFreeSpace((char *)chars, &a, &b, &c, &d); printf("disk free chars : %s\n", chars); (*env)->ReleaseStringUTFChars(env, string, chars); sprintf(buffer, "%d ų·Î ¹ÙÀÌÆ®", a*b*c/1000); length = strlen(buffer); bytes = (*env)->NewByteArray(env, length); (*env)->SetByteArrayRegion(env, bytes, 0, length, (jbyte *) buffer); return bytes; }