linux-packaging-mono/docs/deploy/mono-api-internal.html
Xamarin Public Jenkins (auto-signing) 94b2861243 Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
2016-11-10 13:04:39 +00:00

1194 lines
42 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-internal.html</title>
<style type="text/css">
.mapi-docs {
line-height: 1.5;
padding-left: 2em;
padding-right: 2em;
}
.mapi-docs p {
max-width: 60em;
}
.mapi-docs .mapi-body {
max-width: 60em;
}
.mapi-docs code {
border: 1px solid rgba(214,214,214,1);
background-color: rgba(249,249,249,1);
padding: 0.1em 0.5em;
}
.mapi-description code {
font-family: "Consolas", "Courier", monospace;
border: 1px solid rgba(214,214,214,1);
background-color: rgba(249,249,249,1);
padding: 0.1em 0.2em;
}
.mapi-header {
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
border: 1px solid rgba(233,233,233,1);
background-color: rgba(249,249,249,1);
}
.mapi-code {
padding: 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
border: 1px solid rgba(233,233,233,1);
background-color: rgba(249,249,249,1);
}
.mapi-code:first-line {
line-height: 0px;
}
.mapi-entry code {
border: none;
background-color: transparent;
}
.mapi-parameters {
border-collapse: collapse;
border-spacing: 0;
empty-cells: hide;
border: 0;
margin: 5px 0 26px;
}
.mapi-parameters td {
border: 1px solid rgba(214,214,214,1);
border-left-style: none;
padding: 5px 25px 5px 10px;
}
.mapi-parameters tr>td:last-child {
border-right: 0;
}
.mapi-parameters td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px;
}
.mapi-parameters tr:last-child>td {
border-bottom: 0;
}
.mapi-parameters tr:first-child>td {
border-top: 0;
}
.mapi-parameters tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px;
}
.mapi {
left: -25px;
margin: 0;
padding: 13px 25px 0;
position: relative;
width: 100%;
}
.mapi-description {
background: rgba(249,249,249,1);
border-bottom: 1px solid rgba(233,233,233,1);
left: -25px;
margin: 0;
padding: 13px 25px 0;
position: relative;
width: 100%;
}
.mapi-entry {
background: transparent;
}
.mapi-docs {
}
.mapi-prototype {
border-left: 5px solid rgba(205,233,244,1);
padding: .5em;
margin-top: 5pt;
margin-bottom: 5pt;
font-family: "Consolas", "Courier", monospace;
display: block;
overflow: auto;
background-color: #f9f9f9;
}
.mapi-declaration {
margin-top: 21px;
}
.mapi-section {
font-size: smaller;
font-weight: bold;
margin-top: 21px;
line-height: 1.5;
}
.mapi-strike {
text-decoration: line-through;
}
.mapi-deprecated {
color: red;
}
.mapi-ptr-container {
background: white;
border-bottom: 1px solid rgba(233,233,233,1);
left: -25px;
padding-left: 25px;
padding-right: 25px;
padding-bottom: 13px;
position: relative;
width: 100%;
}
.mapi-ptr {
background: rgba(249,249,249,1);
border-left: 1px solid rgba(233,233,233,1);
border-top: 1px solid rgba(233,233,233,1);
height: 12px;
left: 37px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px;
}
.mapi-height-container {
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
}
</style>
</head>
<body>
<div class="mapi-docs">
<h1>Mono Internals</h1>
<p />This section documents some of the internal APIs used
inside Mono that developers extending or altering Mono might
want to use.
<h2>Strings</h2>
<h3>Other Encodings</h3>
<p />These routines are used when coping with strings that come
from Mono's environment, and might be encoded in one or more
of the external encodings.
<p />For example, some file systems might historically contain a
mix of file names with both old and new encodings, typically
UTF8 for new files, and the old files would be encoded in an 8
bit character set (ISO-8859-1 for example).
<p />These routines try a number of encodings, those specified
in the <tt>MONO_ENCODINGS</tt> environment variable and return
unicode strings that can be used internally.
<p />See the mono(1) man page for more details.
<a name="api:mono_unicode_from_external"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_unicode_from_external</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">gunichar2*
mono_unicode_from_external (const gchar *in, gsize *bytes)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>in</i><td> pointers to the buffer.</td></td></tr><tr><td><i>bytes</i><td> number of bytes in the string.</td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
Tries to turn a <code>NULL</code>-terminated string into UTF16.
<p />
First, see if it's valid UTF8, in which case just turn it directly
into UTF16. Next, run through the colon-separated encodings in
MONO_EXTERNAL_ENCODINGS and do an iconv conversion on each,
returning the first successful conversion to UTF16. If no
conversion succeeds, return <code>NULL</code>.
<p />
Callers must free the returned string if not <code>NULL</code>. bytes holds the number
of bytes in the returned string, not including the terminator.</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_unicode_to_external"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_unicode_to_external</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">gchar*mono_unicode_to_external (const gunichar2 *uni)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>uni</i><td> an UTF16 string to conver to an external representation.</td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
Turns <code>NULL</code>-terminated UTF16 into either UTF8, or the first
working item in MONO_EXTERNAL_ENCODINGS if set. If no conversions
work, then UTF8 is returned.
<p />
Callers must free the returned string.</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_utf8_from_external"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_utf8_from_external</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">gchar*mono_utf8_from_external (const gchar *in)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>in</i><td> pointer to the string buffer.</td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
Tries to turn a <code>NULL</code>-terminated string into UTF8.
<p />
First, see if it's valid UTF8, in which case there's nothing more
to be done. Next, run through the colon-separated encodings in
MONO_EXTERNAL_ENCODINGS and do an iconv conversion on each,
returning the first successful conversion to utf8. If no
conversion succeeds, return <code>NULL</code>.
<p />
Callers must free the returned string if not <code>NULL</code>.
<p />
This function is identical to mono_unicode_from_external, apart
from returning utf8 not utf16; it's handy in a few places to work
in utf8.</div>
</div><!--mapi-description -->
</div><!--height container -->
<h2>Marshalling functions</h2>
</div> <!-- class=mapi -->
<a name="api:mono_marshal_alloc"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_alloc</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_alloc</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_asany"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_asany</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_asany</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_free_array"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_free_array</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_free_array</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_free_asany"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_free_asany</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_free_asany</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_free"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_free</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_free</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_castclass"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_castclass</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_castclass</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_delegate_begin_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_delegate_begin_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_delegate_begin_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_delegate_end_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_delegate_end_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_delegate_end_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_delegate_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_delegate_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_delegate_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_icall_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_icall_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_icall_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_isinst"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_isinst</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_isinst</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_ldfld_remote_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_ldfld_remote_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_ldfld_remote_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_ldfld_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_ldfld_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_ldfld_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_managed_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_managed_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_managed_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_native_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_native_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">MonoMethod*
mono_marshal_get_native_wrapper (MonoMethod *method, gboolean check_exceptions, gboolean aot)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>method</i><td> The MonoMethod to wrap.</td></td></tr><tr><td><i>check_exceptions</i><td> Whenever to check for pending exceptions</td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
generates IL code for the pinvoke wrapper (the generated method
calls the unmanaged code in piinfo-&gt;addr)</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_proxy_cancast"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_proxy_cancast</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_proxy_cancast</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_ptr_to_struct"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_ptr_to_struct</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">MonoMethod*
mono_marshal_get_ptr_to_struct (MonoClass *klass)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>klass</i><td></td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
generates IL code for PtrToStructure (IntPtr src, object structure)</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_remoting_invoke_for_target"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_remoting_invoke_for_target</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_remoting_invoke_for_target</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_remoting_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_remoting_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_remoting_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_remoting_invoke_with_check"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_remoting_invoke_with_check</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_remoting_invoke_with_check</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_runtime_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_runtime_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_runtime_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_stelemref"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_stelemref</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_stelemref</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_stfld_remote_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_stfld_remote_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_stfld_remote_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_stfld_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_stfld_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_stfld_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_struct_to_ptr"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_struct_to_ptr</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">MonoMethod*
mono_marshal_get_struct_to_ptr (MonoClass *klass)
</div>
<p />
<div class="mapi-section">Parameters</div>
<table class="mapi-parameters"><tbody><tr><td><i>klass</i><td></td></td></tr></tbody></table> <div class="mapi-section">Description</div>
<div> <p />
generates IL code for StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld)</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_synchronized_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_synchronized_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_synchronized_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_unbox_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_unbox_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_unbox_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_get_xappdomain_invoke"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_get_xappdomain_invoke</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_get_xappdomain_invoke</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_load_type_info"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_load_type_info</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">MonoMarshalType*
mono_marshal_load_type_info (MonoClass* klass)
</div>
<p />
<div class="mapi-section">Description</div>
<div> <p />
Initialize klass-&gt;marshal_info using information from metadata. This function can
recursively call itself, and the caller is responsible to avoid that by calling
mono_marshal_is_loading_type_info () beforehand.
<p />
LOCKING: Acquires the loader lock.</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_method_from_wrapper"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_method_from_wrapper</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_method_from_wrapper</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_realloc"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_realloc</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_realloc</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_set_last_error"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_set_last_error</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">void
mono_marshal_set_last_error (void)
</div>
<p />
<div class="mapi-section">Description</div>
<div> <p />
This function is invoked to set the last error value from a P/Invoke call
which has SetLastError set.</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_marshal_type_size"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_marshal_type_size</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_marshal_type_size</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
<h2>Metadata Loading Errors</h2>
<p />The routines in this section are used to cope with errors
during metadata loading. Errors in metadata handling can
happen for many reason, and these include (this is not an
exhaustive list).
<ul>
<li>An assembly referenced is missing.
<li>Fields referenced are missing.
<li>Methods referenced are missing.
</li></li></li></ul>
<p />The <tt>mono_loader_set_*</tt> routines are invoked during
metadata loading to flag that an error has happened. The
class loading errros are flagged in a per-thread basis.
<p />In various spots in the runtime the
<tt>mono_loader_get_last_error</tt> routine is called to check
if there was a problem, and then errors are propagated upwards
on the stack until we reach a point where an exception can be
raised and no runtime locks are held.
<p />The <tt>mono_loader_error_prepare_exception</tt> takes a
<tt>MonoLoaderError</tt> structure (the value returned from
<tt>mono_loader_get_last_error</tt>), turns that into an
exception and clears the error condition from the current
thread.
</div> <!-- class=mapi -->
<a name="api:mono_loader_set_error_field_load"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_set_error_field_load</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_set_error_field_load</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_set_error_method_load"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_set_error_method_load</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_set_error_method_load</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_set_error_type_load"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_set_error_type_load</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_set_error_type_load</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_get_last_error"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_get_last_error</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_get_last_error</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_clear_error"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_clear_error</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_clear_error</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_error_prepare_exception"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_error_prepare_exception</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_error_prepare_exception</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
<h2>Metadata Loader Locking: Internals</h2>
<p />The locking functions here are used by code in class.c and
metadata.c to lock access to the shared hashtables inside the
MonoImage.
</div> <!-- class=mapi -->
<a name="api:mono_loader_lock"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_lock</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">void
mono_loader_lock (void)
</div>
<p />
<div class="mapi-section">Description</div>
<div> <p />
See docs/thread-safety.txt for the locking strategy.</div>
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_loader_unlock"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_loader_unlock</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_loader_unlock</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
<h2>Garbage Collector Internal Interface</h2>
<p />The internal interface of the Mono GC is the interface used
between the runtime engine and the garbage collector.
</div> <!-- class=mapi -->
<a name="api:mono_gc_disable"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_disable</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_disable</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_enable"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_enable</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_enable</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_start_world"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_start_world</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_start_world</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_stop_world"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_stop_world</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_stop_world</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_alloc_fixed"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_alloc_fixed</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_alloc_fixed</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_free_fixed"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_free_fixed</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_free_fixed</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_make_descr_from_bitmap"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_make_descr_from_bitmap</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_make_descr_from_bitmap</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_base_init"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_base_init</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_base_init</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_invoke_finalizers"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_invoke_finalizers</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_invoke_finalizers</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_is_gc_thread"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_is_gc_thread</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_is_gc_thread</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_pending_finalizers"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_pending_finalizers</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_pending_finalizers</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div> <!-- class=mapi -->
<a name="api:mono_gc_register_thread"></a>
<div class="mapi">
<div class="mapi-entry "><code>mono_gc_register_thread</code></div>
<div class="mapi-height-container">
<div class="mapi-ptr-container"></div>
<div class="mapi-description">
<div class="mapi-ptr"></div>
<div class="mapi-declaration mapi-section">Syntax</div>
<div class="mapi-prototype">mono_gc_register_thread</div>
<p />
</div><!--mapi-description -->
</div><!--height container -->
</div>
</div></body>
</html>