il2cpp-mono-api-functions.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #pragma once
  2. #include "il2cpp-config.h"
  3. // These types are defined in Mono headers included from debugger-agent.c, so just
  4. // forward delcare them.
  5. struct MonoContext;
  6. struct MonoJitInfo;
  7. struct MonoThreadUnwindState;
  8. struct HandleStackMark;
  9. struct SeqPoint;
  10. // These types are not defined in any Mono headers that get included via debugger-agent.c
  11. // so we can "define" them as incomplete types here.
  12. typedef struct MonoLMF MonoLMF;
  13. typedef struct MonoSeqPointInfo MonoSeqPointInfo;
  14. #if IL2CPP_COMPILER_MSVC
  15. DO_MONO_API(int, mono_gc_register_root, (char* start, size_t size, MonoGCDescriptor descr, int32_t source, void *key, const char* msg))
  16. DO_MONO_API_NOT_EXPORTED(int, mono_gc_register_root_wbarrier, (char *start, size_t size, MonoGCDescriptor descr, int32_t source, void *key, const char *msg))
  17. #else
  18. #if defined(__cplusplus)
  19. enum MonoGCRootSource : int32_t;
  20. #endif
  21. DO_MONO_API(int, mono_gc_register_root, (char* start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, void *key, const char* msg))
  22. DO_MONO_API_NOT_EXPORTED(int, mono_gc_register_root_wbarrier, (char *start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, void *key, const char *msg))
  23. #endif
  24. DO_MONO_API(uint32_t, mono_image_get_entry_point, (MonoImage * image))
  25. DO_MONO_API(const char*, mono_image_get_filename, (MonoImage * image))
  26. DO_MONO_API(const char*, mono_image_get_guid, (MonoImage * image))
  27. DO_MONO_API(int32_t, mono_image_is_dynamic, (MonoImage * image))
  28. DO_MONO_API(MonoAssembly*, mono_image_get_assembly, (MonoImage * image))
  29. DO_MONO_API(const char*, mono_image_get_name, (MonoImage * image))
  30. DO_MONO_API(MonoDomain*, mono_get_root_domain, (void))
  31. DO_MONO_API(MonoDomain*, mono_domain_get, (void))
  32. DO_MONO_API(int32_t, mono_domain_set, (MonoDomain * domain, int32_t force))
  33. DO_MONO_API(void, mono_domain_foreach, (MonoDomainFunc func, void* user_data))
  34. DO_MONO_API_NOT_EXPORTED(void, mono_domain_lock, (MonoDomain * domain))
  35. DO_MONO_API_NOT_EXPORTED(void, mono_domain_unlock, (MonoDomain * domain))
  36. DO_MONO_API(const MonoAssembly*, mono_domain_get_corlib, (MonoDomain * domain))
  37. DO_MONO_API(MonoAssembly*, mono_domain_get_assemblies_iter, (MonoAppDomain * domain, void** iter))
  38. DO_MONO_API(MonoClass*, mono_type_get_class, (MonoType * type))
  39. DO_MONO_API_NOT_EXPORTED(MonoGenericClass*, m_type_get_generic_class, (MonoType * type))
  40. DO_MONO_API(int32_t, mono_type_is_struct, (MonoType * type))
  41. DO_MONO_API(int32_t, mono_type_is_reference, (MonoType * type))
  42. DO_MONO_API(int32_t, mono_type_generic_inst_is_valuetype, (MonoType * monoType))
  43. DO_MONO_API(char*, mono_type_full_name, (MonoType * type))
  44. DO_MONO_API(char*, mono_type_get_name_full, (MonoType * type, MonoTypeNameFormat format))
  45. DO_MONO_API_NOT_EXPORTED(MonoReflectionType*, mono_type_get_object_checked, (MonoDomain * domain, MonoType * type, MonoError * error))
  46. DO_MONO_API(int, mono_type_get_type, (MonoType * type));
  47. DO_MONO_API(int32_t, mono_type_is_byref, (MonoType * type));
  48. DO_MONO_API(uint32_t, mono_type_get_attrs, (MonoType * type));
  49. DO_MONO_API(uint32_t, mono_type_get_attrs, (MonoType * type));
  50. DO_MONO_API(MonoVTable*, mono_class_vtable, (MonoDomain * domain, MonoClass * klass))
  51. DO_MONO_API(int32_t, mono_class_instance_size, (MonoClass * klass))
  52. DO_MONO_API(int32_t, mono_class_value_size, (MonoClass * klass, uint32_t * align))
  53. DO_MONO_API(int32_t, mono_class_is_assignable_from, (MonoClass * klass, MonoClass * oklass))
  54. DO_MONO_API(MonoClass*, mono_class_from_mono_type, (MonoType * type))
  55. DO_MONO_API(uint32_t, mono_class_get_flags, (MonoClass * klass))
  56. DO_MONO_API(int, mono_class_num_fields, (MonoClass * klass))
  57. DO_MONO_API(int, mono_class_num_methods, (MonoClass * klass))
  58. DO_MONO_API(int, mono_class_num_properties, (MonoClass * klass))
  59. DO_MONO_API(MonoClassField*, mono_class_get_fields, (MonoClass * klass, void* * iter))
  60. DO_MONO_API(MonoMethod*, mono_class_get_methods, (MonoClass * klass, void* * iter))
  61. DO_MONO_API(MonoProperty*, mono_class_get_properties, (MonoClass * klass, void* * iter))
  62. DO_MONO_API(MonoClass*, mono_class_get_nested_types, (MonoClass * monoClass, void* *iter))
  63. DO_MONO_API_NOT_EXPORTED(void, mono_class_setup_methods, (MonoClass * klass))
  64. DO_MONO_API_NOT_EXPORTED(void, mono_class_setup_vtable, (MonoClass * klass))
  65. DO_MONO_API_NOT_EXPORTED(GPtrArray*, mono_class_get_methods_by_name, (MonoClass * il2cppMonoKlass, const char* name, uint32_t bflags, int32_t ignore_case, int32_t allow_ctors, MonoError * error))
  66. DO_MONO_API(MonoMethod*, mono_class_get_method_from_name, (MonoClass * klass, const char* name, int argsCount))
  67. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_is_abstract, (MonoClass * klass));
  68. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_field_is_special_static, (MonoClassField * field))
  69. DO_MONO_API(MonoGenericContext*, mono_class_get_context, (MonoClass * klass))
  70. DO_MONO_API_NOT_EXPORTED(MonoMethod*, mono_class_inflate_generic_method_full_checked, (MonoMethod * method, MonoClass * klass_hint, MonoGenericContext * context, MonoError * error))
  71. DO_MONO_API_NOT_EXPORTED(MonoMethod*, mono_class_inflate_generic_method_checked, (MonoMethod * method, MonoGenericContext * context, MonoError * error))
  72. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_is_nullable, (MonoClass * klass))
  73. DO_MONO_API_NOT_EXPORTED(MonoGenericContainer*, mono_class_get_generic_container, (MonoClass * klass))
  74. DO_MONO_API_NOT_EXPORTED(void, mono_class_setup_interfaces, (MonoClass * klass, MonoError * error))
  75. DO_MONO_API(int32_t, mono_class_is_valuetype, (MonoClass * klass))
  76. DO_MONO_API_NOT_EXPORTED(MonoClass*, mono_class_from_generic_parameter_internal, (MonoGenericParam * param))
  77. DO_MONO_API_NOT_EXPORTED(MonoGenericClass*, mono_class_get_generic_class, (MonoClass * monoClass))
  78. DO_MONO_API_NOT_EXPORTED(MonoClass*, mono_class_try_load_from_name, (MonoImage * image, const char* namespaze, const char* name))
  79. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_is_gtd, (MonoClass * klass))
  80. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_is_ginst, (MonoClass * klass))
  81. DO_MONO_API(const char*, mono_class_get_namespace, (MonoClass * klass))
  82. DO_MONO_API(const char*, mono_class_get_name, (MonoClass * klass))
  83. DO_MONO_API(MonoClass*, mono_class_get_parent, (MonoClass * klass))
  84. DO_MONO_API(MonoType*, mono_class_get_type, (MonoClass * klass))
  85. DO_MONO_API(uint32_t, mono_class_get_type_token, (MonoClass * klass))
  86. DO_MONO_API(MonoType*, mono_class_get_byref_type, (MonoClass * klass))
  87. DO_MONO_API(MonoImage*, mono_class_get_image, (MonoClass * klass))
  88. DO_MONO_API(MonoClass*, mono_class_get_interfaces, (MonoClass * klass, void* *iter))
  89. DO_MONO_API_NOT_EXPORTED(int32_t, mono_class_is_interface, (MonoClass * klass))
  90. DO_MONO_API(int, mono_class_get_rank, (MonoClass * klass))
  91. DO_MONO_API(MonoClass*, mono_class_get_element_class, (MonoClass * klass))
  92. DO_MONO_API(int32_t, mono_class_is_enum, (MonoClass * klass))
  93. DO_MONO_API(MonoMethodSignature*, mono_method_signature, (MonoMethod * m))
  94. DO_MONO_API(void, mono_free_method_signatures, ())
  95. DO_MONO_API(MonoDebugLocalsInfo*, mono_debug_lookup_locals, (MonoMethod * method))
  96. DO_MONO_API(void, mono_debug_free_locals, (MonoDebugLocalsInfo * info))
  97. DO_MONO_API(MonoDebugMethodJitInfo*, mono_debug_find_method, (MonoMethod * method, MonoDomain * domain))
  98. DO_MONO_API(void, mono_method_get_param_names, (MonoMethod * method, const char **names))
  99. DO_MONO_API(MonoGenericContext*, mono_method_get_context, (MonoMethod * method))
  100. DO_MONO_API(MonoMethodHeader*, mono_method_get_header_checked, (MonoMethod * method, MonoError * error))
  101. DO_MONO_API(void, mono_metadata_free_mh, (MonoMethodHeader * mh))
  102. DO_MONO_API(char*, mono_method_full_name, (MonoMethod * method, int32_t signature))
  103. DO_MONO_API(MonoGenericContainer*, mono_method_get_generic_container, (MonoMethod * method))
  104. DO_MONO_API_NOT_EXPORTED(void*, mono_method_get_wrapper_data, (MonoMethod * method, uint32_t id))
  105. DO_MONO_API(MonoMethod*, mono_method_get_declaring_generic_method, (MonoMethod * method))
  106. DO_MONO_API(const char*, mono_method_get_name, (MonoMethod * method))
  107. DO_MONO_API(MonoClass*, mono_method_get_class, (MonoMethod * method))
  108. DO_MONO_API(uint32_t, mono_method_get_flags, (MonoMethod * method, uint32_t * iflags))
  109. DO_MONO_API(uint32_t, mono_method_get_token, (MonoMethod * method))
  110. DO_MONO_API(bool, mono_method_is_generic, (MonoMethod * method))
  111. DO_MONO_API(bool, mono_method_is_inflated, (MonoMethod * method))
  112. DO_MONO_API(int32_t, mono_array_element_size, (MonoClass * ac));
  113. DO_MONO_API_NOT_EXPORTED(char*, mono_array_addr_with_size, (MonoArray * array, int size, uintptr_t idx))
  114. DO_MONO_API(uintptr_t, mono_array_length, (MonoArray * array))
  115. DO_MONO_API(const char*, mono_field_get_name, (MonoClassField * field))
  116. DO_MONO_API(void, mono_field_set_value, (MonoObject * obj, MonoClassField * field, void *value))
  117. DO_MONO_API(void, mono_field_static_set_value, (MonoVTable * vt, MonoClassField * field, void *value))
  118. DO_MONO_API_NOT_EXPORTED(void, mono_field_static_get_value_checked, (MonoVTable * vt, MonoClassField * field, void* value, MonoError * error))
  119. DO_MONO_API_NOT_EXPORTED(void, mono_field_static_get_value_for_thread, (MonoInternalThread * thread, MonoVTable * vt, MonoClassField * field, void* value, MonoError * error))
  120. DO_MONO_API_NOT_EXPORTED(MonoObject*, mono_field_get_value_object_checked, (MonoDomain * domain, MonoClassField * field, MonoObject * obj, MonoError * error))
  121. DO_MONO_API(uint32_t, mono_field_get_offset, (MonoClassField * field))
  122. DO_MONO_API(MonoClass*, mono_field_get_parent, (MonoClassField * field))
  123. DO_MONO_API(MonoType*, mono_field_get_type, (MonoClassField * field))
  124. DO_MONO_API(uint16_t*, mono_string_chars, (MonoString * s))
  125. DO_MONO_API(int, mono_string_length, (MonoString * s))
  126. DO_MONO_API(MonoString*, mono_string_new, (MonoDomain * domain, const char *text))
  127. DO_MONO_API_NOT_EXPORTED(MonoString*, mono_string_new_checked, (MonoDomain * domain, const char *text, MonoError * merror))
  128. DO_MONO_API(char*, mono_string_to_utf8_checked, (MonoString * string_obj, MonoError * error))
  129. DO_MONO_API(int, mono_object_hash, (MonoObject * obj))
  130. DO_MONO_API(void*, mono_object_unbox, (MonoObject * obj))
  131. DO_MONO_API(MonoMethod*, mono_object_get_virtual_method, (MonoObject * obj, MonoMethod * method))
  132. DO_MONO_API_NOT_EXPORTED(MonoObject*, mono_object_new_checked, (MonoDomain * domain, MonoClass * klass, MonoError * error))
  133. DO_MONO_API(MonoType*, mono_object_get_type, (MonoObject * object))
  134. DO_MONO_API(MonoClass*, mono_object_get_class, (MonoObject * obj))
  135. DO_MONO_API_NOT_EXPORTED(MonoMethod*, mono_get_method_checked, (MonoImage * image, uint32_t token, MonoClass * klass, MonoGenericContext * context, MonoError * error))
  136. DO_MONO_API(uint32_t, mono_gchandle_new_weakref, (MonoObject * obj, int32_t track_resurrection))
  137. DO_MONO_API(MonoObject*, mono_gchandle_get_target, (uint32_t gchandle))
  138. DO_MONO_API(void, mono_gchandle_free, (uint32_t gchandle))
  139. DO_MONO_API(MonoThread*, mono_thread_current, ())
  140. DO_MONO_API(MonoThread*, mono_thread_get_main, ())
  141. DO_MONO_API(MonoThread*, mono_thread_attach, (MonoDomain * domain))
  142. DO_MONO_API(void, mono_thread_detach, (MonoThread * thread))
  143. DO_MONO_API_NOT_EXPORTED(MonoInternalThread*, mono_thread_internal_current, ())
  144. DO_MONO_API_NOT_EXPORTED(int32_t, mono_thread_internal_is_current, (MonoInternalThread * thread))
  145. DO_MONO_API_NOT_EXPORTED(void, mono_thread_internal_abort, (MonoInternalThread * thread, int32_t appdomain_unload))
  146. DO_MONO_API_NOT_EXPORTED(void, mono_thread_internal_reset_abort, (MonoInternalThread * thread))
  147. DO_MONO_API_NOT_EXPORTED(uint16_t*, mono_thread_get_name, (MonoInternalThread * this_obj, uint32_t * name_len))
  148. DO_MONO_API_NOT_EXPORTED(void, mono_thread_set_name_internal, (MonoInternalThread * this_obj, MonoString * name, int32_t permanent, int32_t reset, MonoError * error))
  149. DO_MONO_API(void, mono_thread_suspend_all_other_threads, ())
  150. DO_MONO_API(int32_t, mono_thread_state_init_from_current, (MonoThreadUnwindState * ctx))
  151. DO_MONO_API(int32_t, mono_thread_state_init_from_monoctx, (MonoThreadUnwindState * ctx, MonoContext * mctx))
  152. DO_MONO_API(const char*, mono_property_get_name, (MonoProperty * prop))
  153. DO_MONO_API(MonoMethod*, mono_property_get_get_method, (MonoProperty * prop))
  154. DO_MONO_API(MonoMethod*, mono_property_get_set_method, (MonoProperty * prop))
  155. DO_MONO_API(MonoClass*, mono_property_get_parent, (MonoProperty * prop))
  156. DO_MONO_API_NOT_EXPORTED(void, mono_loader_lock, ())
  157. DO_MONO_API_NOT_EXPORTED(void, mono_loader_unlock, ())
  158. DO_MONO_API_NOT_EXPORTED(void, mono_loader_lock_track_ownership, (int32_t track))
  159. DO_MONO_API_NOT_EXPORTED(int32_t, mono_loader_lock_is_owned_by_self, ())
  160. DO_MONO_API_NOT_EXPORTED(void, mono_gc_wbarrier_generic_store, (void* ptr, MonoObject * value))
  161. DO_MONO_API_NOT_EXPORTED(void, mono_gc_base_init, ())
  162. DO_MONO_API_NOT_EXPORTED(void, mono_gc_deregister_root, (char* addr))
  163. DO_MONO_API_NOT_EXPORTED(void*, mono_gc_make_root_descr_all_refs, (int numbits))
  164. DO_MONO_API_NOT_EXPORTED(MonoGCDescriptor, mono_gc_make_vector_descr, ())
  165. DO_MONO_API(MonoInterpCallbacks*, mini_get_interp_callbacks, ())
  166. DO_MONO_API_NOT_EXPORTED(int32_t, mono_gc_is_moving, ())
  167. DO_MONO_API_NOT_EXPORTED(void*, mono_gc_invoke_with_gc_lock, (MonoGCLockedCallbackFunc func, void *data))
  168. DO_MONO_API_NOT_EXPORTED(int, mono_reflection_parse_type_checked, (char *name, MonoTypeNameParse * info, MonoError * error))
  169. DO_MONO_API_NOT_EXPORTED(void, mono_reflection_free_type_info, (MonoTypeNameParse * info))
  170. DO_MONO_API_NOT_EXPORTED(MonoType*, mono_reflection_get_type_checked, (MonoImage * rootimage, MonoImage * image, MonoTypeNameParse * info, int32_t ignorecase, int32_t * type_resolve, MonoError * error))
  171. DO_MONO_API(void, mono_runtime_quit, ())
  172. DO_MONO_API(int32_t, mono_runtime_is_shutting_down, ())
  173. DO_MONO_API_NOT_EXPORTED(MonoObject*, mono_runtime_try_invoke, (MonoMethod * method, void* obj, void** params, MonoObject** exc, MonoError * error))
  174. DO_MONO_API_NOT_EXPORTED(MonoObject*, mono_runtime_invoke_checked, (MonoMethod * method, void* obj, void** params, MonoError * error))
  175. DO_MONO_API_NOT_EXPORTED(int32_t, mono_runtime_try_shutdown, ())
  176. DO_MONO_API(void, mono_arch_setup_resume_sighandler_ctx, (MonoContext * ctx, void* func))
  177. DO_MONO_API(void, mono_arch_set_breakpoint, (MonoJitInfo * ji, uint8_t * ip))
  178. DO_MONO_API(void, mono_arch_clear_breakpoint, (MonoJitInfo * ji, uint8_t * ip))
  179. DO_MONO_API(void, mono_arch_start_single_stepping, ())
  180. DO_MONO_API(void, mono_arch_stop_single_stepping, ())
  181. DO_MONO_API(void, mono_arch_skip_breakpoint, (MonoContext * ctx, MonoJitInfo * ji))
  182. DO_MONO_API(void, mono_arch_skip_single_step, (MonoContext * ctx))
  183. DO_MONO_API(intptr_t, mono_arch_context_get_int_reg, (MonoContext * ctx, int reg))
  184. DO_MONO_API(void, mono_arch_context_set_int_reg, (MonoContext * ctx, int reg, intptr_t val))
  185. DO_MONO_API(MonoJitInfo*, mono_jit_info_table_find, (MonoDomain * domain, char* addr))
  186. DO_MONO_API(MonoMethod*, mono_jit_info_get_method, (MonoJitInfo * ji))
  187. DO_MONO_API_NOT_EXPORTED(MonoJitInfo*, mono_jit_info_table_find_internal, (MonoDomain * domain, char* addr, int32_t try_aot, int32_t allow_trampolines))
  188. DO_MONO_API(int32_t, mono_debug_il_offset_from_address, (MonoMethod * method, MonoDomain * domain, uint32_t native_offset))
  189. DO_MONO_API(void, mono_set_is_debugger_attached, (int32_t attached))
  190. DO_MONO_API_NOT_EXPORTED(uint32_t, mono_aligned_addr_hash, (const void* ptr))
  191. DO_MONO_API_NOT_EXPORTED(MonoGenericInst*, mono_metadata_get_generic_inst, (int type_argc, MonoType** type_argv))
  192. DO_MONO_API_NOT_EXPORTED(void*, mono_ldtoken_checked, (MonoImage * image, uint32_t token, MonoClass** handle_class, MonoGenericContext * context, MonoError * error))
  193. DO_MONO_API_NOT_EXPORTED(void, mono_stack_mark_record_size, (MonoThreadInfo * info, HandleStackMark * stackmark, const char* func_name))
  194. DO_MONO_API_NOT_EXPORTED(void, mono_nullable_init, (uint8_t * buf, MonoObject * value, MonoClass * klass))
  195. DO_MONO_API_NOT_EXPORTED(MonoObject*, mono_value_box_checked, (MonoDomain * domain, MonoClass * klass, void* value, MonoError * error))
  196. DO_MONO_API(char*, mono_get_runtime_build_info, ())
  197. DO_MONO_API(MonoMethod*, mono_marshal_method_from_wrapper, (MonoMethod * wrapper))
  198. DO_MONO_API(void*, mono_jit_find_compiled_method_with_jit_info, (MonoDomain * domain, MonoMethod * method, MonoJitInfo** ji))
  199. DO_MONO_API(MonoLMF**, mono_get_lmf_addr, ())
  200. DO_MONO_API(void, mono_set_lmf, (MonoLMF * lmf))
  201. DO_MONO_API(void, mono_aot_get_method_checked, (MonoDomain * domain, MonoMethod * method, MonoError * error))
  202. DO_MONO_API(MonoJitInfo*, mini_jit_info_table_find, (MonoDomain * domain, char* addr, MonoDomain** out_domain))
  203. DO_MONO_API(void, mono_restore_context, (MonoContext * ctx))
  204. DO_MONO_API_NOT_EXPORTED(MonoString*, mono_ldstr_checked, (MonoDomain * domain, MonoImage * image, uint32_t idx, MonoError * error))
  205. DO_MONO_API(int32_t, mono_find_prev_seq_point_for_native_offset, (MonoDomain * domain, MonoMethod * method, int32_t native_offset, MonoSeqPointInfo **info, SeqPoint * seq_point))
  206. DO_MONO_API(int32_t, mono_environment_exitcode_get, ())
  207. DO_MONO_API(void, mono_environment_exitcode_set, (int32_t value))
  208. DO_MONO_API_NOT_EXPORTED(void, mono_threadpool_suspend, ())
  209. DO_MONO_API_NOT_EXPORTED(void, mono_threadpool_resume, ())
  210. DO_MONO_API(MonoImage*, mono_assembly_get_image, (MonoAssembly * assembly))
  211. DO_MONO_API_NOT_EXPORTED(int32_t, mono_verifier_is_method_valid_generic_instantiation, (MonoMethod * method))
  212. DO_MONO_API_NOT_EXPORTED(void, mono_network_init, ())
  213. DO_MONO_API(MonoMethod*, jinfo_get_method, (MonoJitInfo * ji))
  214. DO_MONO_API_NOT_EXPORTED(MonoGenericContext*, mono_generic_class_get_context, (MonoGenericClass * gclass))
  215. DO_MONO_API(MonoClass*, mono_get_string_class, ())