/*
* 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;
}