1 #ifndef _MONONET_METADATA_IMAGE_H_
2 #define _MONONET_METADATA_IMAGE_H_
9 typedef struct _MonoImage MonoImage;
10 typedef struct _MonoAssembly MonoAssembly;
11 typedef struct _MonoTableInfo MonoTableInfo;
13 #define MONO_PUBLIC_KEY_TOKEN_LENGTH 17
18 const char *hash_value;
19 const guint8* public_key;
20 // string of 16 hex chars + 1 NULL
21 guchar public_key_token [MONO_PUBLIC_KEY_TOKEN_LENGTH];
25 guint16 major, minor, build, revision;
30 MONO_IMAGE_ERROR_ERRNO,
31 MONO_IMAGE_MISSING_ASSEMBLYREF,
32 MONO_IMAGE_IMAGE_INVALID
33 } MonoImageOpenStatus;
35 void mono_images_init (void);
36 void mono_images_cleanup (void);
38 MonoImage *mono_image_open (const char *fname,
39 MonoImageOpenStatus *status);
40 MonoImage *mono_image_open_full (const char *fname,
41 MonoImageOpenStatus *status, gboolean refonly);
42 MonoImage *mono_pe_file_open (const char *fname,
43 MonoImageOpenStatus *status);
44 MonoImage *mono_image_open_from_data (char *data, guint32 data_len, gboolean need_copy,
45 MonoImageOpenStatus *status);
46 MonoImage *mono_image_open_from_data_full (char *data, guint32 data_len, gboolean need_copy,
47 MonoImageOpenStatus *status, gboolean refonly);
48 MonoImage *mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy,
49 MonoImageOpenStatus *status, gboolean refonly, const char *name);
50 void mono_image_fixup_vtable (MonoImage *image);
51 MonoImage *mono_image_loaded (const char *name);
52 MonoImage *mono_image_loaded_full (const char *name, gboolean refonly);
53 MonoImage *mono_image_loaded_by_guid (const char *guid);
54 MonoImage *mono_image_loaded_by_guid_full (const char *guid, gboolean refonly);
55 void mono_image_init (MonoImage *image);
56 void mono_image_close (MonoImage *image);
57 void mono_image_addref (MonoImage *image);
58 const char *mono_image_strerror (MonoImageOpenStatus status);
60 int mono_image_ensure_section (MonoImage *image,
62 int mono_image_ensure_section_idx (MonoImage *image,
65 guint32 mono_image_get_entry_point (MonoImage *image);
66 const char *mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size);
67 MonoImage* mono_image_load_file_for_image (MonoImage *image, int fileidx);
69 MonoImage* mono_image_load_module (MonoImage *image, int idx);
71 const char* mono_image_get_name (MonoImage *image);
72 const char* mono_image_get_filename (MonoImage *image);
73 const char * mono_image_get_guid (MonoImage *image);
74 MonoAssembly* mono_image_get_assembly (MonoImage *image);
75 gboolean mono_image_is_dynamic (MonoImage *image);
76 char* mono_image_rva_map (MonoImage *image, guint32 rva);
78 const MonoTableInfo *mono_image_get_table_info (MonoImage *image, int table_id);
79 int mono_image_get_table_rows (MonoImage *image, int table_id);
80 int mono_table_info_get_rows (const MonoTableInfo *table);
82 /* This actually returns a MonoPEResourceDataEntry *, but declaring it
83 * causes an include file loop.
85 gpointer mono_image_lookup_resource (MonoImage *image, guint32 res_id,
86 guint32 lang_id, gunichar2 *name);
88 const char* mono_image_get_public_key (MonoImage *image, guint32 *size);
89 const char* mono_image_get_strong_name (MonoImage *image, guint32 *size);
90 guint32 mono_image_strong_name_position (MonoImage *image, guint32 *size);
91 void mono_image_add_to_name_cache (MonoImage *image,
93 const char *name, guint32 idx);
94 gboolean mono_image_has_authenticode_entry (MonoImage *image);