示例#1
0
文件: JNIEnv.cs 项目: cd37ycs/jni4net
        public JNIResult UnregisterNatives(Class clazz)
        {
            JNIResult natives = unregisterNatives.Invoke(envPtr, clazz.jvmHandle);

            ExceptionTest();
            return(natives);
        }
示例#2
0
文件: JNIEnv.cs 项目: cd37ycs/jni4net
        public JNIResult RegisterNatives(Class clazz, JNINativeMethod *methods, int nMethods)
        {
            JNIResult natives = registerNatives.Invoke(envPtr, clazz.jvmHandle, methods, nMethods);

            ExceptionTest();
            return(natives);
        }
示例#3
0
        public JNIResult GetEnv(out JNIEnv penv, int version)
        {
            IntPtr    env;
            JNIResult result = getEnv.Invoke(native, out env, version);

            penv = new JNIEnv(env);
            return(result);
        }
示例#4
0
        public static unsafe void Unregister(Class jvmProxy, JNIEnv env)
        {
            JNIResult res = env.UnregisterNatives(jvmProxy);

            if (res != JNIResult.JNI_OK)
            {
                throw new JNIException("Can't unbind native methods to class " + jvmProxy);
            }
        }
示例#5
0
        public static unsafe void Unregister(JniHandle clazz, JNIEnv env)
        {
            JNIResult res = env.UnregisterNatives(clazz);

            if (res != JNIResult.JNI_OK)
            {
                throw new JNIException("Can't unbind native methods to class.");
            }
        }
示例#6
0
 public static JNIEnv GetEnvNoThrow(JavaVM vm)
 {
     if (threadJNIEnv == null)
     {
         JNIResult result = vm.AttachCurrentThreadAsDaemon(out threadJNIEnv, null);
         if (result != JNIResult.JNI_OK)
         {
             return(null);
         }
     }
     return(threadJNIEnv);
 }
示例#7
0
 public static JNIEnv GetEnvForVm(JavaVM vm)
 {
     if (threadJNIEnv == null)
     {
         JNIResult result = vm.AttachCurrentThreadAsDaemon(out threadJNIEnv, null);
         if (result != JNIResult.JNI_OK)
         {
             throw new JNIException("AttachCurrentThreadAsDaemon failed: " + result);
         }
     }
     return(threadJNIEnv);
 }
示例#8
0
 public static void DetachCurrentThread()
 {
     if (threadJNIEnv != null)
     {
         JNIResult result = defaultVM.DetachCurrentThread();
         if (result != JNIResult.JNI_OK)
         {
             throw new JNIException("DetachCurrentThread failed: " + result);
         }
         threadJNIEnv = null;
     }
 }
示例#9
0
        public JNIResult GetEnv(out JNIEnv penv, int version)
        {
            if (getEnv == null)
            {
                MethodWrapper.GetDelegateForFunctionPointer(functions.GetEnv, ref getEnv);
            }
            IntPtr    env;
            JNIResult result = getEnv.Invoke(native, out env, version);

            penv = new JNIEnv(env);
            return(result);
        }
示例#10
0
        public static unsafe void Register(List <JNINativeMethod> registrations, Class jvmProxy, JNIEnv env)
        {
            JNINativeMethod[] methods = registrations.ToArray();
            fixed(JNINativeMethod *m = &(methods[0]))
            {
                JNIResult res = env.RegisterNatives(jvmProxy, m, methods.Length);

                if (res != JNIResult.JNI_OK)
                {
                    throw new JNIException("Can't bind native methods to class " + jvmProxy + " is it in system classloader ?");
                }
            }
        }