Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > media > main-backports > by-pkgid > ec081eb1f0fb87b7640153d3a3340fac > files > 57

mono-doc-2.4.2.2-1mdv2009.1.x86_64.rpm

<?xml version="1.0" encoding="us-ascii"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>mono-api-image.html</title>
   <style type="text/css">


   h3 { 
       font-size: 18px;
       padding-bottom: 4pt;
       border-bottom: 2px solid #dddddd;
   }
       
   .api {
     border: 1px solid;
     padding: 10pt;
     margin: 10pt;
   } 

   .api-entry { 
       border-bottom: none;
       font-size: 18px;
   }

   .prototype {
     border: 1px solid;
     background-color: #f2f2f2;
     padding: 5pt;
     margin-top: 5pt;
     margin-bottom: 5pt;  
   } 

   .header {
     border: 1px solid;
     padding: 0 0 5pt 5pt;
     margin: 10pt;
     white-space: pre;
       font-family: monospace;
   }
    
   .code {
     border: 1px solid;
     padding: 0 0 5pt 5pt;
     margin: 10pt;
     white-space: pre;
       font-family: monospace;
   }
   

</style>
</head>
<body>
<h2>Image Manipulation</h2>

	<p />Images are the component of assemblies that actually hold
	the CIL code and <a href="mono-api-metadata.html">metadata</a>
	in the extended PE/COFF file.

<h3>Synopsis</h3>

	<div class="header">
#include &lt;metadata/image.h&gt;

typedef struct _MonoImage MonoImage;
typedef enum {
        MONO_IMAGE_OK,
        MONO_IMAGE_ERROR_ERRNO,
        MONO_IMAGE_MISSING_ASSEMBLYREF,
        MONO_IMAGE_IMAGE_INVALID
} MonoImageOpenStatus;

MonoImage*     <a href="#api:mono_image_open">mono_image_open</a>                   (const char *fname, 
                                                  MonoImageOpenStatus *status);
               <a href="#api:mono_image_open_full"></a>                                  
               <a href="#api:mono_image_open_from_data"></a>                                  
               <a href="#api:mono_image_open_from_data_full"></a>                                  
void           <a href="#api:mono_image_close">mono_image_close</a>                  (MonoImage *image);
void           <a href="#api:mono_image_addref">mono_image_addref</a>                 (MonoImage *image);
               <a href="#api:mono_image_load_file_for_image"></a>                                  
               <a href="#api:mono_image_get_guid"></a>                                  
MonoAssembly*  <a href="#api:mono_image_get_assembly">mono_image_get_assembly</a>           (MonoImage *image);
guint32        <a href="#api:mono_image_get_entry_point">mono_image_get_entry_point</a>        (MonoImage *image);
const char*    <a href="#api:mono_image_get_filename">mono_image_get_filename</a>           (MonoImage *image);
const char*    <a href="#api:mono_image_get_name">mono_image_get_name</a>               (MonoImage *image);
const char*    <a href="#api:mono_image_get_resource">mono_image_get_resource</a>           (MonoImage *image, 
                                                  guint32 offset, 
                                                  guint32 *size);
               <a href="#api:mono_image_get_table_info"></a>                                  
               <a href="#api:mono_image_get_table_rows"></a>                                  
gboolean       <a href="#api:mono_image_is_dynamic">mono_image_is_dynamic</a>             (MonoImage *image);
               <a href="#api:mono_image_loaded_by_guid"></a>                                  
MonoImage*     <a href="#api:mono_image_loaded">mono_image_loaded</a>                 (const char *name);
gpointer       <a href="#api:mono_image_lookup_resource">mono_image_lookup_resource</a>        (MonoImage *image, 
                                                  guint32 res_id, 
                                                  guint32 lang_id, 
                                                  gunichar2 *name);
const char *   <a href="#api:mono_image_strerror">mono_image_strerror</a>               (MonoImageOpenStatus status);
guint32        <a href="#api:mono_image_strong_name_position">mono_image_strong_name_position</a>   (MonoImage *image, 
                                                  guint32 *size);
const char*    <a href="#api:mono_image_get_public_key">mono_image_get_public_key</a>         (MonoImage *image, 
                                                  guint32 *size);
const char*    <a href="#api:mono_image_get_strong_name">mono_image_get_strong_name</a>        (MonoImage *image, 
                                                  guint32 *size);
gboolean       <a href="#api:mono_image_has_authenticode_entry">mono_image_has_authenticode_entry</a> (MonoImage *image);
               <a href="#api:mono_image_rva_map"></a>                                  
int            <a href="#api:mono_image_ensure_section_idx">mono_image_ensure_section_idx</a>     (MonoImage *image, 
                                                  int section);
int            <a href="#api:mono_image_ensure_section">mono_image_ensure_section</a>         (MonoImage *image, 
                                                  const char *section);

	</div>

<h3>Image APIs</h3>

	<p />Images are the actual elements in the runtime that contain
	the actual code being executed. 

<a name="cil_image_open"></a>
<h3>Opening and closing MonoImages</h3>

 <a name="api:mono_image_open"></a>
 <div class="api">
    <div class="api-entry">mono_image_open</div>

    <div class="prototype">MonoImage*
mono_image_open (const char *fname, MonoImageOpenStatus *status)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>fname:</i></dt><dd> filename that points to the module we want to open</dd><dt><i>status:</i></dt><dd> An error condition is returned in this field</dd></blockquote>
<b>Returns</b>
<blockquote>	  An open image of type %MonoImage or NULL on error. 

	 The caller holds a temporary reference to the returned image which should be cleared 
	 when no longer needed by calling mono_image_close ().
	 if NULL, then check the value of <i>status</i> for details on the error</blockquote>

</div> <a name="api:mono_image_open_full"></a>
 <div class="api">
    <div class="api-entry">mono_image_open_full</div>

    <div class="prototype">Prototype: mono_image_open_full</div>
<p />

</div> <a name="api:mono_image_open_from_data"></a>
 <div class="api">
    <div class="api-entry">mono_image_open_from_data</div>

    <div class="prototype">Prototype: mono_image_open_from_data</div>
<p />

</div> <a name="api:mono_image_open_from_data_full"></a>
 <div class="api">
    <div class="api-entry">mono_image_open_from_data_full</div>

    <div class="prototype">Prototype: mono_image_open_from_data_full</div>
<p />

</div> <a name="api:mono_image_close"></a>
 <div class="api">
    <div class="api-entry">mono_image_close</div>

    <div class="prototype">void
mono_image_close (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image file we wish to close</dd></blockquote>
<b>Remarks</b>
<p />	 
	 Closes an image file, deallocates all memory consumed and
	 unmaps all possible sections of the file

</div> <a name="api:mono_image_addref"></a>
 <div class="api">
    <div class="api-entry">mono_image_addref</div>

    <div class="prototype">void
mono_image_addref (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image file we wish to add a reference to</dd></blockquote>
<b>Remarks</b>
<p />	 
	  Increases the reference count of an image.

</div> <a name="api:mono_image_load_file_for_image"></a>
 <div class="api">
    <div class="api-entry">mono_image_load_file_for_image</div>

    <div class="prototype">Prototype: mono_image_load_file_for_image</div>
<p />


</div><h3>Image Information</h3>

 <a name="api:mono_image_get_guid"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_guid</div>

    <div class="prototype">Prototype: mono_image_get_guid</div>
<p />

</div> <a name="api:mono_image_get_assembly"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_assembly</div>

    <div class="prototype">MonoAssembly* 
mono_image_get_assembly (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage.</dd></blockquote>
<b>Returns</b>
<blockquote>	  the assembly that holds this image.
</blockquote>
<b>Remarks</b>
<p />	 
	 Use this routine to get the assembly that owns this image.
	

</div> <a name="api:mono_image_get_entry_point"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_entry_point</div>

    <div class="prototype">guint32
mono_image_get_entry_point (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image where the entry point will be looked up.</dd></blockquote>
<b>Returns</b>
<blockquote>	  the token for the entry point method in the image
</blockquote>
<b>Remarks</b>
<p />	 
	 Use this routine to determine the metadata token for method that
	 has been flagged as the entry point.
	

</div> <a name="api:mono_image_get_filename"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_filename</div>

    <div class="prototype">const char*
mono_image_get_filename (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote>	  the filename.
</blockquote>
<b>Remarks</b>
<p />	 
	 Used to get the filename that hold the actual MonoImage
	

</div> <a name="api:mono_image_get_name"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_name</div>

    <div class="prototype">const char*
mono_image_get_name (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>name:</i></dt><dd> a MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote>	  the name of the assembly.
</blockquote>

</div> <a name="api:mono_image_get_resource"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_resource</div>

    <div class="prototype">const char*
mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image where the resource will be looked up.</dd><dt><i>offset:</i></dt><dd> The offset to add to the resource</dd><dt><i>size:</i></dt><dd> a pointer to an int where the size of the resource will be stored</dd></blockquote>
<b>Returns</b>
<blockquote>	  the pointer to the resource whose offset is <i>offset</i>.
</blockquote>
<b>Remarks</b>
<p />	 
	 This is a low-level routine that fetches a resource from the
	 metadata that starts at a given <i>offset</i>.  The <i>size</i> parameter is
	 filled with the data field as encoded in the metadata.
	

</div> <a name="api:mono_image_get_table_info"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_table_info</div>

    <div class="prototype">Prototype: mono_image_get_table_info</div>
<p />

</div> <a name="api:mono_image_get_table_rows"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_table_rows</div>

    <div class="prototype">Prototype: mono_image_get_table_rows</div>
<p />

</div> <a name="api:mono_image_is_dynamic"></a>
 <div class="api">
    <div class="api-entry">mono_image_is_dynamic</div>

    <div class="prototype">gboolean
mono_image_is_dynamic (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote>	  TRUE if the image was created dynamically, FALSE if not.
</blockquote>
<b>Remarks</b>
<p />	 
	 Determines if the given image was created dynamically through the
	 System.Reflection.Emit API
	

</div> <a name="api:mono_image_loaded_by_guid"></a>
 <div class="api">
    <div class="api-entry">mono_image_loaded_by_guid</div>

    <div class="prototype">Prototype: mono_image_loaded_by_guid</div>
<p />

</div> <a name="api:mono_image_loaded"></a>
 <div class="api">
    <div class="api-entry">mono_image_loaded</div>

    <div class="prototype">MonoImage*
mono_image_loaded (const char *name)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>name:</i></dt><dd> name of the image to load</dd></blockquote>
<b>Returns</b>
<blockquote>	  the loaded MonoImage, or NULL on failure.
</blockquote>
<b>Remarks</b>
<p />	 
	 This routine ensures that the given image is loaded.
	

</div> <a name="api:mono_image_lookup_resource"></a>
 <div class="api">
    <div class="api-entry">mono_image_lookup_resource</div>

    <div class="prototype">gpointer
mono_image_lookup_resource (MonoImage *image, guint32 res_id, guint32 lang_id, gunichar2 *name)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image to look up the resource in</dd><dt><i>res_id:</i></dt><dd> A MONO_PE_RESOURCE_ID_ that represents the resource ID to lookup.</dd><dt><i>lang_id:</i></dt><dd> The language id.</dd><dt><i>name:</i></dt><dd> the resource name to lookup.</dd></blockquote>
<b>Returns</b>
<blockquote>	  NULL if not found, otherwise a pointer to the in-memory representation

	 of the given resource. The caller should free it using g_free () when no longer
	 needed.</blockquote>

</div> <a name="api:mono_image_strerror"></a>
 <div class="api">
    <div class="api-entry">mono_image_strerror</div>

    <div class="prototype">const char *
mono_image_strerror (MonoImageOpenStatus status)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>status:</i></dt><dd> an code indicating the result from a recent operation</dd></blockquote>
<b>Returns</b>
<blockquote>	  a string describing the error
</blockquote>


</div><h3>Public Keys, Strong Names and Certificates</h3>

 <a name="api:mono_image_strong_name_position"></a>
 <div class="api">
    <div class="api-entry">mono_image_strong_name_position</div>

    <div class="prototype">guint32
mono_image_strong_name_position (MonoImage *image, guint32 *size)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote>	  the position within the image file where the strong name

	 is stored.</blockquote>
<b>Remarks</b>
<p />	 
	 If the image has a strong name, and <i>size</i> is not NULL, the value
	 pointed to by size will have the size of the strong name.
	

</div> <a name="api:mono_image_get_public_key"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_public_key</div>

    <div class="prototype">const char*
mono_image_get_public_key (MonoImage *image, guint32 *size)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote>	  NULL if the image does not have a public key, or a pointer

	 to the public key.</blockquote>
<b>Remarks</b>
<p />	 
	 This is used to obtain the public key in the <i>image</i>.
	
<p />
	 If the image has a public key, and <i>size</i> is not NULL, the value
	 pointed to by size will have the size of the public key.
	
<p />

</div> <a name="api:mono_image_get_strong_name"></a>
 <div class="api">
    <div class="api-entry">mono_image_get_strong_name</div>

    <div class="prototype">const char*
mono_image_get_strong_name (MonoImage *image, guint32 *size)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote>	  NULL if the image does not have a strong name, or a

	 pointer to the public key.</blockquote>
<b>Remarks</b>
<p />	 
	 If the image has a strong name, and <i>size</i> is not NULL, the value
	 pointed to by size will have the size of the strong name.
	

</div> <a name="api:mono_image_has_authenticode_entry"></a>
 <div class="api">
    <div class="api-entry">mono_image_has_authenticode_entry</div>

    <div class="prototype">gboolean
mono_image_has_authenticode_entry (MonoImage *image)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote>	  TRUE if the image contains an authenticode entry in the PE

	 directory.</blockquote>
<b>Remarks</b>
<p />	 
	 Use this routine to determine if the image has a Authenticode
	 Certificate Table.
	


</div><h3>Low-level features</h3>

 <a name="api:mono_image_rva_map"></a>
 <div class="api">
    <div class="api-entry">mono_image_rva_map</div>

    <div class="prototype">Prototype: mono_image_rva_map</div>
<p />

</div> <a name="api:mono_image_ensure_section_idx"></a>
 <div class="api">
    <div class="api-entry">mono_image_ensure_section_idx</div>

    <div class="prototype">int
mono_image_ensure_section_idx (MonoImage *image, int section)

</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image we are operating on</dd><dt><i>section:</i></dt><dd> section number that we will load/map into memory</dd></blockquote>
<b>Returns</b>
<blockquote>	  TRUE on success
</blockquote>
<b>Remarks</b>
<p />	 
	 This routine makes sure that we have an in-memory copy of
	 an image section (.text, .rsrc, .data).
	

</div></body>
</html>
</span>