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