image.h 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * \file
  3. */
  4. #ifndef _MONONET_METADATA_IMAGE_H_
  5. #define _MONONET_METADATA_IMAGE_H_
  6. #include <stdio.h>
  7. #include <mono/utils/mono-publib.h>
  8. #include <mono/utils/mono-error.h>
  9. #include <mono/metadata/object-forward.h>
  10. MONO_BEGIN_DECLS
  11. typedef struct _MonoAssembly MonoAssembly;
  12. typedef struct _MonoAssemblyName MonoAssemblyName;
  13. typedef struct _MonoTableInfo MonoTableInfo;
  14. typedef enum {
  15. MONO_IMAGE_OK,
  16. MONO_IMAGE_ERROR_ERRNO,
  17. MONO_IMAGE_MISSING_ASSEMBLYREF,
  18. MONO_IMAGE_IMAGE_INVALID
  19. } MonoImageOpenStatus;
  20. MONO_API void mono_images_init (void);
  21. MONO_API void mono_images_cleanup (void);
  22. MONO_API MonoImage *mono_image_open (const char *fname,
  23. MonoImageOpenStatus *status);
  24. MONO_API MONO_RT_EXTERNAL_ONLY
  25. MonoImage *mono_image_open_full (const char *fname,
  26. MonoImageOpenStatus *status, mono_bool refonly);
  27. MONO_API MONO_RT_EXTERNAL_ONLY
  28. MonoImage *mono_pe_file_open (const char *fname,
  29. MonoImageOpenStatus *status);
  30. MONO_API MONO_RT_EXTERNAL_ONLY
  31. MonoImage *mono_image_open_from_data (char *data, uint32_t data_len, mono_bool need_copy,
  32. MonoImageOpenStatus *status);
  33. MONO_API MONO_RT_EXTERNAL_ONLY
  34. MonoImage *mono_image_open_from_data_full (char *data, uint32_t data_len, mono_bool need_copy,
  35. MonoImageOpenStatus *status, mono_bool refonly);
  36. MONO_API MONO_RT_EXTERNAL_ONLY
  37. MonoImage *mono_image_open_from_data_with_name (char *data, uint32_t data_len, mono_bool need_copy,
  38. MonoImageOpenStatus *status, mono_bool refonly, const char *name);
  39. MONO_API void mono_image_fixup_vtable (MonoImage *image);
  40. MONO_API MONO_RT_EXTERNAL_ONLY
  41. MonoImage *mono_image_loaded (const char *name);
  42. MONO_API MONO_RT_EXTERNAL_ONLY
  43. MonoImage *mono_image_loaded_full (const char *name, mono_bool refonly);
  44. MONO_API MONO_RT_EXTERNAL_ONLY
  45. MonoImage *mono_image_loaded_by_guid (const char *guid);
  46. MONO_API MONO_RT_EXTERNAL_ONLY
  47. MonoImage *mono_image_loaded_by_guid_full (const char *guid, mono_bool refonly);
  48. MONO_API void mono_image_init (MonoImage *image);
  49. MONO_API void mono_image_close (MonoImage *image);
  50. MONO_API void mono_image_addref (MonoImage *image);
  51. MONO_API const char *mono_image_strerror (MonoImageOpenStatus status);
  52. MONO_API int mono_image_ensure_section (MonoImage *image,
  53. const char *section);
  54. MONO_API int mono_image_ensure_section_idx (MonoImage *image,
  55. int section);
  56. MONO_API uint32_t mono_image_get_entry_point (MonoImage *image);
  57. MONO_API const char *mono_image_get_resource (MonoImage *image, uint32_t offset, uint32_t *size);
  58. MONO_API MONO_RT_EXTERNAL_ONLY MonoImage* mono_image_load_file_for_image (MonoImage *image, int fileidx);
  59. MONO_API MONO_RT_EXTERNAL_ONLY MonoImage* mono_image_load_module (MonoImage *image, int idx);
  60. MONO_API const char* mono_image_get_name (MonoImage *image);
  61. MONO_API const char* mono_image_get_filename (MonoImage *image);
  62. MONO_API const char * mono_image_get_guid (MonoImage *image);
  63. MONO_API MonoAssembly* mono_image_get_assembly (MonoImage *image);
  64. MONO_API mono_bool mono_image_is_dynamic (MonoImage *image);
  65. MONO_API char* mono_image_rva_map (MonoImage *image, uint32_t rva);
  66. MONO_API const MonoTableInfo *mono_image_get_table_info (MonoImage *image, int table_id);
  67. MONO_API int mono_image_get_table_rows (MonoImage *image, int table_id);
  68. MONO_API int mono_table_info_get_rows (const MonoTableInfo *table);
  69. /* This actually returns a MonoPEResourceDataEntry *, but declaring it
  70. * causes an include file loop.
  71. */
  72. MONO_API void* mono_image_lookup_resource (MonoImage *image, uint32_t res_id,
  73. uint32_t lang_id, mono_unichar2 *name);
  74. MONO_API const char* mono_image_get_public_key (MonoImage *image, uint32_t *size);
  75. MONO_API const char* mono_image_get_strong_name (MonoImage *image, uint32_t *size);
  76. MONO_API uint32_t mono_image_strong_name_position (MonoImage *image, uint32_t *size);
  77. MONO_API void mono_image_add_to_name_cache (MonoImage *image,
  78. const char *nspace, const char *name, uint32_t idx);
  79. MONO_API mono_bool mono_image_has_authenticode_entry (MonoImage *image);
  80. MONO_END_DECLS
  81. #endif