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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
import "unknwn.idl";
import "CLRPrivBinding.idl";
//=====================================================================================================================
// Forward declarations
interface ICLRPrivRuntime;
//=====================================================================================================================
// CLRPrivHosting coclass
//=====================================================================================================================
[
uuid("EDA73987-E6C0-42BF-A6B7-073F7B24D8C7")
]
library CLRPrivHosting
{
//=================================================================================================================
// CLRPrivRuntime
//=================================================================================================================
[
uuid(BC1B53A8-DCBC-43B2-BB17-1E4061447AE8)
]
coclass CLRPrivRuntime
{
[default] interface ICLRPrivRuntime;
};
};
//=====================================================================================================================
// ICLRPrivRuntime
//=====================================================================================================================
[
uuid(BC1B53A8-DCBC-43B2-BB17-1E4061447AE9),
version(1.0),
local
]
interface ICLRPrivRuntime : IUnknown
{
/**********************************************************************************
** Used for accessing additional hosting functionality.
**
** rclsid - the CoClass from which to request the interface.
** riid - the IID of the interface being requested.
** ppUnk - receives the interface pointer value.
**********************************************************************************/
HRESULT GetInterface(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out, iid_is(riid), retval] LPVOID *ppUnk);
/**********************************************************************************
** Creates a domain using the provided binder for the root default bind context.
**
** pwzFriendlyName - the name to associate with the domain.
** pBinder - the binder to use for root-level binds in the default context.
** pdwAppDomainId - receives the ID of the created domain.
**********************************************************************************/
HRESULT CreateAppDomain(
[in, string] LPCWSTR pwzFriendlyName,
[in] ICLRPrivBinder * pBinder,
[out, retval] LPDWORD pdwAppDomainId);
/**********************************************************************************
** Creates a native-callable function pointer to the specified method.
**
** appDomainID - the domain in which to create the delegate.
** wszAssemblyName - the name of the assembly in which the method is defined.
** wszClassName - the name of the class (including namespace) in which the method
** is defined.
** wszMethodName - the name of the method for which to create a delegate.
** ppvDelegate - receives the delegate pointer value.
**********************************************************************************/
HRESULT CreateDelegate(
[in] DWORD appDomainID,
[in, string] LPCWSTR wszAssemblyName,
[in, string] LPCWSTR wszClassName,
[in, string] LPCWSTR wszMethodName,
[out, retval] LPVOID * ppvDelegate);
/**********************************************************************************
** Creates an AppX appdomain and executes entrypoint method of an executable there
**
**********************************************************************************/
HRESULT ExecuteMain(
[in] ICLRPrivBinder * pBinder,
[out, retval] int * pRetVal
);
};
|