深入探索JNI本地代码补丁技术
1. JNI本地方法实现示例
以下是 getPhysicalTotal() 函数的本地实现代码:
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) m
超级会员免费看
订阅专栏 解锁全文
2927

被折叠的 条评论
为什么被折叠?



