// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license 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 ); };