summaryrefslogtreecommitdiff
path: root/src/inc/clrprivhosting.idl
blob: b288c286b6e776a0f574bf3d4a261252e01487a8 (plain)
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
    );
};