Implements the JNI_CreateJavaVM native method.
81 {
82 var pInitArgs = (JavaVMInitArgs*)vm_args;
83
84
85 if (!IsSupportedJNIVersion(pInitArgs->version) || pInitArgs->version == JNIEnv.JNI_VERSION_1_1)
86 return JNIEnv.JNI_EVERSION;
87
88
89 if (jvmCreated)
90 return JNIEnv.JNI_ERR;
91
92 var properties = new Dictionary<string, string>();
93 for (int i = 0; i < pInitArgs->nOptions; i++)
94 {
95 var option = DecodePlatformString(pInitArgs->options[i].optionString);
96 if (option == null)
97 return JNIEnv.JNI_ERR;
98
99 if (option.StartsWith("-D"))
100 {
101 var idx = option.IndexOf('=', 2);
102 properties[option.Substring(2, idx - 2)] = option.Substring(idx + 1);
103 }
104 else if (option.StartsWith("-verbose"))
105 {
106
107 }
108 else if (option == "vfprintf" || option == "exit" || option == "abort")
109 {
110
111 }
112 else if (pInitArgs->ignoreUnrecognized == JNIEnv.JNI_FALSE)
113 {
114 return JNIEnv.JNI_ERR;
115 }
116 }
117
118
119 foreach (var kvp in properties)
120 JVM.Properties.User[kvp.Key] = kvp.Value;
121
123 *p_vm = JavaVM.pJavaVM;
124
125 return JavaVM.AttachCurrentThread(JavaVM.pJavaVM, p_env, null);
126 }