95fdb59ea6
Former-commit-id: b39a328747c2f3414dc52e009fb6f0aa80ca2492
852 lines
30 KiB
HTML
852 lines
30 KiB
HTML
<?xml version="1.0" encoding="us-ascii"?>
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>mono-api-domains.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-codeblock {
|
|
display: block;
|
|
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-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">
|
|
<h2>Application Domains</h2>
|
|
|
|
<h3>Synopsis</h3>
|
|
|
|
<div class="mapi-header">
|
|
#include <metadata/appdomain.h>
|
|
|
|
/* Managed AppDomain */
|
|
typedef struct _MonoAppDomain MonoAppDomain;
|
|
|
|
/* Unmanaged representation */
|
|
typedef struct _MonoDomain MonoDomain;
|
|
|
|
/* Represents System.Runtime.Remoting.Contexts.Context */
|
|
typedef struct _MonoAppContext MonoAppContext
|
|
|
|
</div>
|
|
|
|
<p />Application domains are used to isolate multiple
|
|
applications on a single Mono virtual machine. They are
|
|
conceptually similiar to processes, the difference is that
|
|
processes are managed by the operating system, while
|
|
application domains are managed by the Mono virtual machine.
|
|
|
|
<p />For more information on applications domains see the <a href="http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx">AppDomain FAQ</a>.
|
|
|
|
<p />The <tt>MonoDomain</tt> is the unmanaged representation of
|
|
the <a href="http://www.mono-project.com/monodoc/T:System.AppDomain">System.AppDomain</a>
|
|
managed type, while the <tt>MonoAppDomain</tt> type represents
|
|
the managed version (<tt>MonoAppDomain</tt> has a pointer to
|
|
a <tt>MonoDomain</tt>).
|
|
|
|
<a name="api:mono_domain_assembly_open"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_assembly_open</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">MonoAssembly*
|
|
mono_domain_assembly_open (MonoDomain *domain, const char *name)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> the application domain</td></tr><tr><td><i>name</i></td><td> file name of the assembly</td></tr></tbody></table> </div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_create"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_create</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">MonoDomain*
|
|
mono_domain_create (void)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> New initialized <code>MonoDomain</code>, with no configuration or assemblies
|
|
|
|
loaded into it.</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Creates a new application domain, the unmanaged representation
|
|
of the actual domain.
|
|
<p />
|
|
Application domains provide an isolation facilty for assemblies. You
|
|
can load assemblies and execute code in them that will not be visible
|
|
to other application domains. This is a runtime-based virtualization
|
|
technology.
|
|
<p />
|
|
It is possible to unload domains, which unloads the assemblies and
|
|
data that was allocated in that domain.
|
|
<p />
|
|
When a domain is created a mempool is allocated for domain-specific
|
|
structures, along a dedicated code manager to hold code that is
|
|
associated with the domain.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_create_appdomain"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_create_appdomain</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">MonoDomain*
|
|
mono_domain_create_appdomain (char *friendly_name, char *configuration_file)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>friendly_name</i></td><td> The friendly name of the appdomain to create</td></tr><tr><td><i>configuration_file</i></td><td> The configuration file to initialize the appdomain with</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> a <code>MonoDomain</code> initialized with the appdomain
|
|
</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_finalize"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_finalize</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">gboolean
|
|
mono_domain_finalize (MonoDomain *domain, guint32 timeout)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> the domain to finalize</td></tr><tr><td><i>timeout</i></td><td> msecs to wait for the finalization to complete, <code>-1</code> to wait indefinitely</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> <code>TRUE</code> if succeeded, <code>FALSE</code> if there was a timeout
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Request finalization of all finalizable objects inside <i>domain</i>. Wait
|
|
<i>timeout</i> msecs for the finalization to complete.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_foreach"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_foreach</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_domain_foreach (MonoDomainFunc func, gpointer user_data)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>func</i></td><td> function to invoke with the domain data</td></tr><tr><td><i>user_data</i></td><td> user-defined pointer that is passed to the supplied <i>func</i> fo reach domain</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Use this method to safely iterate over all the loaded application
|
|
domains in the current runtime. The provided <i>func</i> is invoked with a
|
|
pointer to the <code>MonoDomain</code> and is given the value of the <i>user_data</i>
|
|
parameter which can be used to pass state to your called routine.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_free"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_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">void
|
|
mono_domain_free (MonoDomain *domain, gboolean force)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> the domain to release</td></tr><tr><td><i>force</i></td><td> if <code>TRUE</code>, it allows the root domain to be released (used at shutdown only).</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
This releases the resources associated with the specific domain.
|
|
This is a low-level function that is invoked by the AppDomain infrastructure
|
|
when necessary.
|
|
<p />
|
|
In theory, this is dead code on netcore and thus does not need to be ALC-aware.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_from_appdomain"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_from_appdomain</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">MonoDomain*
|
|
mono_domain_from_appdomain (MonoAppDomain *appdomain_raw)
|
|
|
|
</div>
|
|
<p />
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_get_by_id"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_get_by_id</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">MonoDomain*
|
|
mono_domain_get_by_id (gint32 domainid)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domainid</i></td><td> the ID</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> the domain for a specific domain id.
|
|
</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_get_friendly_name"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_get_friendly_name</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">const char *
|
|
mono_domain_get_friendly_name (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> The friendly name of <i>domain</i>. Can be <code>NULL</code> if not yet set.
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
The returned string's lifetime is the same as <i>domain</i>'s. Consider
|
|
copying it if you need to store it somewhere.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_get_id"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_get_id</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">gint32
|
|
mono_domain_get_id (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> The unique ID for <i>domain</i>.
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
A domain ID is guaranteed to be unique for as long as the domain
|
|
using it is alive. It may be reused later once the domain has been
|
|
unloaded.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_get"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_get</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">MonoDomain*
|
|
mono_domain_get ()
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> the current domain
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
This method returns the value of the current <code>MonoDomain</code> that this thread
|
|
and code are running under. To obtain the root domain use
|
|
<code>mono_get_root_domain</code> API.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_has_type_resolve"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_has_type_resolve</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">gboolean
|
|
mono_domain_has_type_resolve (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> application domain being looked up</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> <code>TRUE</code> if the <code>AppDomain.TypeResolve</code> field has been set.
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_is_unloading"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_is_unloading</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">gboolean
|
|
mono_domain_is_unloading (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_owns_vtable_slot"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_owns_vtable_slot</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">gboolean
|
|
mono_domain_owns_vtable_slot (MonoDomain *domain, gpointer vtable_slot)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> Whether <i>vtable_slot</i> is inside a vtable which belongs to <i>domain</i>.
|
|
</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_set_config"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_set_config</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_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> <code>MonoDomain</code> initialized with the appdomain we want to change</td></tr><tr><td><i>base_dir</i></td><td> new base directory for the appdomain</td></tr><tr><td><i>config_file_name</i></td><td> path to the new configuration for the app domain</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Used to set the system configuration for an appdomain
|
|
<p />
|
|
Without using this, embedded builds will get 'System.Configuration.ConfigurationErrorsException:
|
|
Error Initializing the configuration system. ---> System.ArgumentException:
|
|
The 'ExeConfigFilename' argument cannot be null.' for some managed calls.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_set_internal"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_set_internal</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_domain_set_internal (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> the new domain</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Sets the current domain to <i>domain</i>.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_set"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_set</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">gboolean
|
|
mono_domain_set (MonoDomain *domain, gboolean force)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> domain</td></tr><tr><td><i>force</i></td><td> force setting.</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> <code>TRUE</code> on success; <code>FALSE</code> if the domain is unloaded
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Set the current appdomain to <i>domain</i>. If <i>force</i> is set, set it even
|
|
if it is being unloaded.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_try_type_resolve"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_try_type_resolve</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">MonoReflectionAssembly*
|
|
mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *typebuilder_raw)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> application domain in which to resolve the type</td></tr><tr><td><i>name</i></td><td> the name of the type to resolve or <code>NULL</code>.</td></tr><tr><td><i>typebuilder</i></td><td> A <code>System.Reflection.Emit.TypeBuilder</code>, used if name is <code>NULL</code>.</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> A <code>MonoReflectionAssembly</code> or <code>NULL</code> if not found
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
This routine invokes the internal <code>System.AppDomain.DoTypeResolve</code> and returns
|
|
the assembly that matches name, or ((TypeBuilder)typebuilder).FullName.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_try_unload"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_try_unload</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_domain_try_unload</div>
|
|
<p />
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_domain_unload"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_domain_unload</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_domain_try_unload (MonoDomain *domain, MonoObject **exc)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> The domain to unload</td></tr><tr><td><i>exc</i></td><td> Exception information</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Unloads an appdomain. Follows the process outlined in:
|
|
http://blogs.gotdotnet.com/cbrumme
|
|
<p />
|
|
If doing things the 'right' way is too hard or complex, we do it the
|
|
'simple' way, which means do everything needed to avoid crashes and
|
|
memory leaks, but not much else.
|
|
<p />
|
|
It is required to pass a valid reference to the exc argument, upon return
|
|
from this function *exc will be set to the exception thrown, if any.
|
|
<p />
|
|
If this method is not called from an icall (embedded scenario for instance),
|
|
it must not be called with any managed frames on the stack, since the unload
|
|
process could end up trying to abort the current thread.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
|
|
<h3>Contexts</h3>
|
|
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_context_init"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_context_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">void
|
|
mono_context_init (MonoDomain *domain)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>domain</i></td><td> The domain where the <code>System.Runtime.Remoting.Context.Context</code> is initialized</td></tr></tbody></table> <div class="mapi-section">Description</div>
|
|
<div>
|
|
Initializes the <i>domain</i>'s default <code>System.Runtime.Remoting</code> 's Context.</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_context_get"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_context_get</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">MonoAppContext*
|
|
mono_context_get (void)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Return value</div>
|
|
<div> the current Mono Application Context.
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_context_get_domain_id"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_context_get_domain_id</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">gint32
|
|
mono_context_get_domain_id (MonoAppContext *context)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>context</i></td><td> the context to operate on.</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> The ID of the domain that <i>context</i> was created in.
|
|
</div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_context_get_id"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_context_get_id</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">gint32
|
|
mono_context_get_id (MonoAppContext *context)
|
|
|
|
</div>
|
|
<p />
|
|
<div class="mapi-section">Parameters</div>
|
|
<table class="mapi-parameters"><tbody><tr><td><i>context</i></td><td> the context to operate on.</td></tr></tbody></table> <div class="mapi-section">Return value</div>
|
|
<div> The unique ID for <i>context</i>.
|
|
</div>
|
|
<div class="mapi-section">Description</div>
|
|
<div>
|
|
<p />
|
|
Context IDs are guaranteed to be unique for the duration of a Mono
|
|
process; they are never reused.
|
|
<p /></div>
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|
|
</div> <!-- class=mapi -->
|
|
|
|
<a name="api:mono_context_set"></a>
|
|
<div class="mapi">
|
|
<div class="mapi-entry "><code>mono_context_set</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_context_set (MonoAppContext * new_context)
|
|
|
|
</div>
|
|
<p />
|
|
</div><!--mapi-description -->
|
|
</div><!--height container -->
|