assembly.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. * \file
  3. */
  4. #ifndef _MONONET_METADATA_ASSEMBLY_H_
  5. #define _MONONET_METADATA_ASSEMBLY_H_
  6. #include <mono/utils/mono-error.h>
  7. #include <mono/metadata/image.h>
  8. MONO_BEGIN_DECLS
  9. MONO_API void mono_assemblies_init (void);
  10. MONO_API void mono_assemblies_cleanup (void);
  11. MONO_API MONO_RT_EXTERNAL_ONLY
  12. MonoAssembly *mono_assembly_open (const char *filename,
  13. MonoImageOpenStatus *status);
  14. MONO_API MONO_RT_EXTERNAL_ONLY
  15. MonoAssembly *mono_assembly_open_full (const char *filename,
  16. MonoImageOpenStatus *status,
  17. mono_bool refonly);
  18. MONO_API MONO_RT_EXTERNAL_ONLY
  19. MonoAssembly* mono_assembly_load (MonoAssemblyName *aname,
  20. const char *basedir,
  21. MonoImageOpenStatus *status);
  22. MONO_API MONO_RT_EXTERNAL_ONLY
  23. MonoAssembly* mono_assembly_load_full (MonoAssemblyName *aname,
  24. const char *basedir,
  25. MonoImageOpenStatus *status,
  26. mono_bool refonly);
  27. MONO_API MONO_RT_EXTERNAL_ONLY
  28. MonoAssembly* mono_assembly_load_from (MonoImage *image, const char *fname,
  29. MonoImageOpenStatus *status);
  30. MONO_API MONO_RT_EXTERNAL_ONLY
  31. MonoAssembly* mono_assembly_load_from_full (MonoImage *image, const char *fname,
  32. MonoImageOpenStatus *status,
  33. mono_bool refonly);
  34. MONO_API MONO_RT_EXTERNAL_ONLY
  35. MonoAssembly* mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *status);
  36. MONO_API MONO_RT_EXTERNAL_ONLY
  37. MonoAssembly* mono_assembly_loaded (MonoAssemblyName *aname);
  38. MONO_API MONO_RT_EXTERNAL_ONLY
  39. MonoAssembly* mono_assembly_loaded_full (MonoAssemblyName *aname, mono_bool refonly);
  40. MONO_API void mono_assembly_get_assemblyref (MonoImage *image, int index, MonoAssemblyName *aname);
  41. MONO_API void mono_assembly_load_reference (MonoImage *image, int index);
  42. MONO_API void mono_assembly_load_references (MonoImage *image, MonoImageOpenStatus *status);
  43. MONO_API MONO_RT_EXTERNAL_ONLY MonoImage* mono_assembly_load_module (MonoAssembly *assembly, uint32_t idx);
  44. MONO_API void mono_assembly_close (MonoAssembly *assembly);
  45. MONO_API void mono_assembly_setrootdir (const char *root_dir);
  46. MONO_API MONO_CONST_RETURN char *mono_assembly_getrootdir (void);
  47. MONO_API char *mono_native_getrootdir (void);
  48. MONO_API void mono_assembly_foreach (MonoFunc func, void* user_data);
  49. MONO_API void mono_assembly_set_main (MonoAssembly *assembly);
  50. MONO_API MonoAssembly *mono_assembly_get_main (void);
  51. MONO_API MONO_RT_EXTERNAL_ONLY
  52. MonoImage *mono_assembly_get_image (MonoAssembly *assembly);
  53. MONO_API MONO_RT_EXTERNAL_ONLY
  54. MonoAssemblyName *mono_assembly_get_name (MonoAssembly *assembly);
  55. MONO_API mono_bool mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname);
  56. MONO_API mono_bool mono_assembly_names_equal (MonoAssemblyName *l, MonoAssemblyName *r);
  57. MONO_API char* mono_stringify_assembly_name (MonoAssemblyName *aname);
  58. /* Installs a function which is called each time a new assembly is loaded. */
  59. typedef void (*MonoAssemblyLoadFunc) (MonoAssembly *assembly, void* user_data);
  60. MONO_API MONO_RT_EXTERNAL_ONLY void
  61. mono_install_assembly_load_hook (MonoAssemblyLoadFunc func, void* user_data);
  62. /*
  63. * Installs a new function which is used to search the list of loaded
  64. * assemblies for a given assembly name.
  65. */
  66. typedef MonoAssembly *(*MonoAssemblySearchFunc) (MonoAssemblyName *aname, void* user_data);
  67. MONO_API MONO_RT_EXTERNAL_ONLY
  68. void mono_install_assembly_search_hook (MonoAssemblySearchFunc func, void* user_data);
  69. MONO_API MONO_RT_EXTERNAL_ONLY
  70. void mono_install_assembly_refonly_search_hook (MonoAssemblySearchFunc func, void* user_data);
  71. MONO_API MONO_RT_EXTERNAL_ONLY
  72. MonoAssembly* mono_assembly_invoke_search_hook (MonoAssemblyName *aname);
  73. /*
  74. * Installs a new search function which is used as a last resort when loading
  75. * an assembly fails. This could invoke AssemblyResolve events.
  76. */
  77. MONO_API MONO_RT_EXTERNAL_ONLY
  78. void
  79. mono_install_assembly_postload_search_hook (MonoAssemblySearchFunc func, void* user_data);
  80. MONO_API MONO_RT_EXTERNAL_ONLY
  81. void
  82. mono_install_assembly_postload_refonly_search_hook (MonoAssemblySearchFunc func, void* user_data);
  83. /* Installs a function which is called before a new assembly is loaded
  84. * The hook are invoked from last hooked to first. If any of them returns
  85. * a non-null value, that will be the value returned in mono_assembly_load */
  86. typedef MonoAssembly * (*MonoAssemblyPreLoadFunc) (MonoAssemblyName *aname,
  87. char **assemblies_path,
  88. void* user_data);
  89. MONO_API MONO_RT_EXTERNAL_ONLY
  90. void mono_install_assembly_preload_hook (MonoAssemblyPreLoadFunc func, void* user_data);
  91. MONO_API MONO_RT_EXTERNAL_ONLY
  92. void mono_install_assembly_refonly_preload_hook (MonoAssemblyPreLoadFunc func, void* user_data);
  93. MONO_API MONO_RT_EXTERNAL_ONLY void
  94. mono_assembly_invoke_load_hook (MonoAssembly *ass);
  95. MONO_API MonoAssemblyName* mono_assembly_name_new (const char *name);
  96. MONO_API const char* mono_assembly_name_get_name (MonoAssemblyName *aname);
  97. MONO_API const char* mono_assembly_name_get_culture (MonoAssemblyName *aname);
  98. MONO_API uint16_t mono_assembly_name_get_version (MonoAssemblyName *aname,
  99. uint16_t *minor, uint16_t *build, uint16_t *revision);
  100. MONO_API mono_byte* mono_assembly_name_get_pubkeytoken (MonoAssemblyName *aname);
  101. MONO_API MONO_RT_EXTERNAL_ONLY void mono_assembly_name_free (MonoAssemblyName *aname);
  102. typedef struct {
  103. const char *name;
  104. const unsigned char *data;
  105. unsigned int size;
  106. } MonoBundledAssembly;
  107. MONO_API void mono_register_bundled_assemblies (const MonoBundledAssembly **assemblies);
  108. MONO_API void mono_register_config_for_assembly (const char* assembly_name, const char* config_xml);
  109. MONO_API void mono_register_symfile_for_assembly (const char* assembly_name, const mono_byte *raw_contents, int size);
  110. MONO_API void mono_register_machine_config (const char *config_xml);
  111. MONO_API void mono_set_rootdir (void);
  112. MONO_API void mono_set_dirs (const char *assembly_dir, const char *config_dir);
  113. MONO_API void mono_set_assemblies_path (const char* path);
  114. MONO_END_DECLS
  115. #endif