/
ObjectiveCMarshal+UnhandledExceptionPropagationHandler.xml
56 lines (52 loc) · 3.59 KB
/
ObjectiveCMarshal+UnhandledExceptionPropagationHandler.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<Type Name="ObjectiveCMarshal+UnhandledExceptionPropagationHandler" FullName="System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal+UnhandledExceptionPropagationHandler">
<TypeSignature Language="C#" Value="public delegate delegate* unmanaged<IntPtr, void> ObjectiveCMarshal.UnhandledExceptionPropagationHandler(Exception exception, RuntimeMethodHandle lastMethod, out IntPtr context);" />
<TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed ObjectiveCMarshal/UnhandledExceptionPropagationHandler extends System.MulticastDelegate" />
<TypeSignature Language="DocId" Value="T:System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler" />
<TypeSignature Language="VB.NET" Value="Public Delegate Function ObjectiveCMarshal.UnhandledExceptionPropagationHandler(exception As Exception, lastMethod As RuntimeMethodHandle, ByRef context As IntPtr) As delegate* unmanaged< As IntPtr, Void> " />
<TypeSignature Language="F#" Value="type ObjectiveCMarshal.UnhandledExceptionPropagationHandler = delegate of Exception * RuntimeMethodHandle * nativeint -> delegate* unmanaged<nativeint, unit>" />
<TypeSignature Language="C++ CLI" Value="public: delegate delegate* unmanaged<IntPtr , void> ^ ObjectiveCMarshal::UnhandledExceptionPropagationHandler(Exception ^ exception, RuntimeMethodHandle lastMethod, [Runtime::InteropServices::Out] IntPtr % context);" />
<AssemblyInfo>
<AssemblyName>System.Runtime.InteropServices</AssemblyName>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Delegate</BaseTypeName>
</Base>
<Parameters>
<Parameter Name="exception" Type="System.Exception">
<Attributes>
<Attribute FrameworkAlternate="net-8.0;net-9.0">
<AttributeName Language="C#">[System.Runtime.CompilerServices.Nullable(1)]</AttributeName>
<AttributeName Language="F#">[<System.Runtime.CompilerServices.Nullable(1)>]</AttributeName>
</Attribute>
</Attributes>
</Parameter>
<Parameter Name="lastMethod" Type="System.RuntimeMethodHandle" />
<Parameter Name="context" Type="System.IntPtr" RefType="out" />
</Parameters>
<ReturnValue>
<ReturnType>delegate* unmanaged<System.IntPtr, System.Void></ReturnType>
</ReturnValue>
<Docs>
<param name="exception">Unhandled exception.</param>
<param name="lastMethod">Last managed method.</param>
<param name="context">Context provided to the returned function pointer.</param>
<summary>Handler for unhandled Exceptions crossing the managed -> native boundary (that is, Reverse P/Invoke).</summary>
<returns>Exception propagation callback.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
If the handler is able to propagate the managed Exception properly to the native environment an
unmanaged callback can be returned, otherwise `null`. The <xref:System.RuntimeMethodHandle> is to the
last managed method that was executed prior to leaving the runtime. Along with the returned callback,
the handler can return a context that will be passed to the callback during dispatch.
The returned handler will be passed the context when called and it is the responsibility of the callback
to manage. The handler must not return and is expected to propagate the exception (for example, throw a native exception)
into the native environment or fail fast.
]]></format>
</remarks>
</Docs>
</Type>