Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EnumerableViewOfDispatch.cs
Go to the documentation of this file.
1
using
System.Collections
;
2
using
System.Runtime.CompilerServices
;
3
using
System.Runtime.InteropServices.ComTypes
;
4
5
namespace
System.Runtime.InteropServices.CustomMarshalers
;
6
7
internal
sealed
class
EnumerableViewOfDispatch
:
ICustomAdapter
,
System
.Collections.
IEnumerable
8
{
9
private
const
int
DISPID_NEWENUM
= -4;
10
11
private
const
int
LCID_DEFAULT
= 1;
12
13
private
readonly
object
_dispatch
;
14
15
private
IDispatch
Dispatch
=> (
IDispatch
)
_dispatch
;
16
17
public
EnumerableViewOfDispatch
(
object
dispatch)
18
{
19
_dispatch
= dispatch;
20
}
21
22
public
unsafe
System.Collections.IEnumerator
GetEnumerator
()
23
{
24
System
.
Runtime
.
CompilerServices
.
Unsafe
.SkipInit(out
Variant
variant);
25
void
*
value
= &variant;
26
DISPPARAMS
pDispParams =
default
(
DISPPARAMS
);
27
Guid
riid =
Guid
.
Empty
;
28
Dispatch
.
Invoke
(-4, ref riid, 1,
InvokeFlags
.DISPATCH_METHOD |
InvokeFlags
.DISPATCH_PROPERTYGET, ref pDispParams,
new
IntPtr
(
value
),
IntPtr
.
Zero
,
IntPtr
.
Zero
);
29
IntPtr
intPtr =
IntPtr
.
Zero
;
30
try
31
{
32
object
obj
= variant.ToObject();
33
if
(!(
obj
is
IEnumVARIANT
o))
34
{
35
throw
new
InvalidOperationException
(
SR
.
InvalidOp_InvalidNewEnumVariant
);
36
}
37
intPtr =
Marshal
.
GetIUnknownForObject
(o);
38
return
(
System
.
Collections
.
IEnumerator
)
EnumeratorToEnumVariantMarshaler
.
GetInstance
(
null
).MarshalNativeToManaged(intPtr);
39
}
40
finally
41
{
42
variant.Clear();
43
if
(intPtr !=
IntPtr
.
Zero
)
44
{
45
Marshal
.
Release
(intPtr);
46
}
47
}
48
}
49
50
public
object
GetUnderlyingObject
()
51
{
52
return
_dispatch
;
53
}
54
}
System.InvalidOperationException
Definition
InvalidOperationException.cs:9
System.Runtime.CompilerServices.Unsafe
Definition
Unsafe.cs:6
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.GetEnumerator
unsafe System.Collections.IEnumerator GetEnumerator()
Definition
EnumerableViewOfDispatch.cs:22
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.EnumerableViewOfDispatch
EnumerableViewOfDispatch(object dispatch)
Definition
EnumerableViewOfDispatch.cs:17
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.Dispatch
IDispatch Dispatch
Definition
EnumerableViewOfDispatch.cs:15
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.DISPID_NEWENUM
const int DISPID_NEWENUM
Definition
EnumerableViewOfDispatch.cs:9
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch._dispatch
readonly object _dispatch
Definition
EnumerableViewOfDispatch.cs:13
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.GetUnderlyingObject
object GetUnderlyingObject()
Definition
EnumerableViewOfDispatch.cs:50
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.LCID_DEFAULT
const int LCID_DEFAULT
Definition
EnumerableViewOfDispatch.cs:11
System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch
Definition
EnumerableViewOfDispatch.cs:8
System.Runtime.InteropServices.CustomMarshalers.EnumeratorToEnumVariantMarshaler.GetInstance
static ICustomMarshaler GetInstance(string cookie)
Definition
EnumeratorToEnumVariantMarshaler.cs:12
System.Runtime.InteropServices.CustomMarshalers.EnumeratorToEnumVariantMarshaler
Definition
EnumeratorToEnumVariantMarshaler.cs:9
System.Runtime.InteropServices.Marshal.Release
static unsafe int Release(IntPtr pUnk)
Definition
Marshal.cs:766
System.Runtime.InteropServices.Marshal.GetIUnknownForObject
static IntPtr GetIUnknownForObject(object o)
Definition
Marshal.cs:231
System.Runtime.InteropServices.Marshal
Definition
Marshal.cs:14
System.SR.InvalidOp_InvalidNewEnumVariant
static string InvalidOp_InvalidNewEnumVariant
Definition
SR.cs:2104
System.SR
Definition
SR.cs:7
System.Collections.IEnumerable
Definition
IEnumerable.cs:8
System.Collections.IEnumerator
Definition
IEnumerator.cs:4
System.Runtime.InteropServices.ComTypes.IEnumVARIANT
Definition
IEnumVARIANT.cs:7
System.Runtime.InteropServices.ICustomAdapter
Definition
ICustomAdapter.cs:4
System.Runtime.InteropServices.IDispatch.Invoke
void Invoke(int dispIdMember, ref Guid riid, int lcid, InvokeFlags wFlags, ref DISPPARAMS pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)
System.Runtime.InteropServices.IDispatch
Definition
IDispatch.cs:9
System.Collections
Definition
BlockingCollection.cs:8
System.Runtime.CompilerServices
Definition
NullablePublicOnlyAttribute.cs:3
System.Runtime.InteropServices.ComTypes
Definition
BIND_OPTS.cs:1
System.Runtime.InteropServices.CustomMarshalers
Definition
ComDataHelpers.cs:3
System.Runtime.InteropServices.InvokeFlags
InvokeFlags
Definition
InvokeFlags.cs:5
System.Runtime.InteropServices.UnmanagedType.IDispatch
@ IDispatch
System.Runtime
Definition
NullablePublicOnlyAttribute.cs:3
System.ExceptionArgument.value
@ value
System.ExceptionArgument.obj
@ obj
System
Definition
BlockingCollection.cs:8
System.Guid.Empty
static readonly Guid Empty
Definition
Guid.cs:86
System.Guid
Definition
Guid.cs:15
System.IntPtr.Zero
static readonly IntPtr Zero
Definition
IntPtr.cs:18
System.IntPtr
Definition
IntPtr.cs:14
System.Runtime.InteropServices.ComTypes.DISPPARAMS
Definition
DISPPARAMS.cs:5
System.Runtime.InteropServices.Variant
Definition
Variant.cs:9
source
System.Private.CoreLib
System.Runtime.InteropServices.CustomMarshalers
EnumerableViewOfDispatch.cs
Generated by
1.10.0