ReactOS 0.4.16-dev-2359-g4b75ec5
mscoree_private.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _VTableFixup
 
struct  CLRRuntimeInfo
 
struct  RuntimeHost
 
struct  CorProcess
 
struct  CorDebug
 
struct  parsed_config_file
 
struct  supported_runtime
 

Macros

#define WINE_MONO_VERSION   "9.4.0"
 
#define WINE_PRELOAD_CONTINUE   0
 
#define WINE_PRELOAD_SKIP_PRIVATE_PATH   1
 
#define WINE_PRELOAD_SKIP_GAC   2
 
#define WINE_PRELOAD_SET_GAC   4
 

Typedefs

typedef struct _VTableFixup VTableFixup
 
typedef struct tagASSEMBLY ASSEMBLY
 
typedef BOOL(WINAPINativeEntryPointFunc) (HINSTANCE, DWORD, LPVOID)
 
typedef struct _MonoDomain MonoDomain
 
typedef struct _MonoAssembly MonoAssembly
 
typedef struct _MonoAssemblyName MonoAssemblyName
 
typedef struct _MonoType MonoType
 
typedef struct _MonoImage MonoImage
 
typedef struct _MonoClass MonoClass
 
typedef struct _MonoObject MonoObject
 
typedef struct _MonoString MonoString
 
typedef struct _MonoMethod MonoMethod
 
typedef struct _MonoProfiler MonoProfiler
 
typedef struct _MonoThread MonoThread
 
typedef struct RuntimeHost RuntimeHost
 
typedef struct CLRRuntimeInfo CLRRuntimeInfo
 
typedef struct CorProcess CorProcess
 
typedef struct CorDebug CorDebug
 
typedef struct parsed_config_file parsed_config_file
 
typedef struct supported_runtime supported_runtime
 
typedef MonoAssembly *(CDECLMonoAssemblyPreLoadFunc) (MonoAssemblyName *aname, char **assemblies_path, void *user_data)
 
typedef MonoAssembly *(CDECLWineMonoAssemblyPreLoadFunc) (MonoAssemblyName *aname, char **assemblies_path, int *flags, void *user_data)
 
typedef void(CDECLMonoProfileFunc) (MonoProfiler *prof)
 
typedef void(CDECLMonoPrintCallback) (const char *string, INT is_stdout)
 
typedef void(* MonoLogCallback) (const char *log_domain, const char *log_level, const char *message, INT fatal, void *user_data)
 

Enumerations

enum  MonoImageOpenStatus { MONO_IMAGE_OK , MONO_IMAGE_ERROR_ERRNO , MONO_IMAGE_MISSING_ASSEMBLYREF , MONO_IMAGE_IMAGE_INVALID }
 
enum  MonoAotMode {
  MONO_AOT_MODE_NONE , MONO_AOT_MODE_NORMAL , MONO_AOT_MODE_HYBRID , MONO_AOT_MODE_FULL ,
  MONO_AOT_MODE_LLVMONLY , MONO_AOT_MODE_INTERP , MONO_AOT_MODE_INTERP_LLVMONLY , MONO_AOT_MODE_LLVMONLY_INTERP ,
  MONO_AOT_MODE_INTERP_ONLY
}
 

Functions

charWtoA (const WCHAR *wstr) __WINE_DEALLOC(free) __WINE_MALLOC
 
HRESULT CLRMetaHost_CreateInstance (REFIID riid, void **ppobj)
 
HRESULT CLRMetaHostPolicy_CreateInstance (REFIID riid, void **ppobj)
 
HRESULT WINAPI CLRMetaHost_GetVersionFromFile (ICLRMetaHost *iface, LPCWSTR pwzFilePath, LPWSTR pwzBuffer, DWORD *pcchBuffer)
 
HRESULT assembly_create (ASSEMBLY **out, LPCWSTR file)
 
HRESULT assembly_from_hmodule (ASSEMBLY **out, HMODULE hmodule)
 
HRESULT assembly_release (ASSEMBLY *assembly)
 
HRESULT assembly_get_runtime_version (ASSEMBLY *assembly, LPSTR *version)
 
HRESULT assembly_get_vtable_fixups (ASSEMBLY *assembly, VTableFixup **fixups, DWORD *count)
 
HRESULT assembly_get_native_entrypoint (ASSEMBLY *assembly, NativeEntryPointFunc *func)
 
HRESULT get_runtime_info (LPCWSTR exefile, LPCWSTR version, LPCWSTR config_file, IStream *config_stream, DWORD startup_flags, DWORD runtimeinfo_flags, BOOL legacy, ICLRRuntimeInfo **result)
 
BOOL get_mono_path (LPWSTR path, BOOL skip_local)
 
MonoDomainget_root_domain (void)
 
HRESULT ICLRRuntimeInfo_GetRuntimeHost (ICLRRuntimeInfo *iface, RuntimeHost **result)
 
HRESULT MetaDataDispenser_CreateInstance (IUnknown **ppUnk)
 
HRESULT parse_config_file (LPCWSTR filename, parsed_config_file *result)
 
HRESULT parse_config_stream (IStream *stream, parsed_config_file *result)
 
void free_parsed_config_file (parsed_config_file *file)
 
MonoImage *CDECLmono_assembly_get_image (MonoAssembly *assembly)
 
MonoAssembly *CDECLmono_assembly_load_from (MonoImage *image, const char *fname, MonoImageOpenStatus *status)
 
const char *CDECLmono_assembly_name_get_name (MonoAssemblyName *aname)
 
MonoAssembly *CDECLmono_assembly_open (const char *filename, MonoImageOpenStatus *status)
 
 void (CDECL *mono_callspec_set_assembly)(MonoAssembly *assembly)
 
MonoClass *CDECLmono_class_from_mono_type (MonoType *type)
 
MonoClass *CDECLmono_class_from_name (MonoImage *image, const char *name_space, const char *name)
 
MonoMethod *CDECLmono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count)
 
MonoDomain *CDECLmono_domain_get (void)
 
MonoDomain *CDECLmono_domain_get_by_id (int id)
 
 BOOL (CDECL *mono_domain_set)(MonoDomain *domain
 
MonoImage *CDECLmono_get_corlib (void)
 
 int (CDECL *mono_jit_exec)(MonoDomain *domain
 
MonoDomain *CDECLmono_jit_init_version (const char *domain_name, const char *runtime_version)
 
MonoImage *CDECLmono_image_open_from_module_handle (HMODULE module_handle, char *fname, UINT has_entry_point, MonoImageOpenStatus *status)
 
void *CDECLmono_marshal_get_vtfixup_ftnptr (MonoImage *image, DWORD token, WORD type)
 
MonoDomain *CDECLmono_object_get_domain (MonoObject *obj)
 
MonoMethod *CDECLmono_object_get_virtual_method (MonoObject *obj, MonoMethod *method)
 
MonoObject *CDECLmono_object_new (MonoDomain *domain, MonoClass *klass)
 
void *CDECLmono_object_unbox (MonoObject *obj)
 
MonoType *CDECLmono_reflection_type_from_name (char *name, MonoImage *image)
 
MonoObject *CDECLmono_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc)
 
MonoString *CDECLmono_string_new (MonoDomain *domain, const char *str)
 
MonoThread *CDECLmono_thread_attach (MonoDomain *domain)
 
void expect_no_runtimes (void)
 
HRESULT RuntimeHost_Construct (CLRRuntimeInfo *runtime_version, RuntimeHost **result)
 
void RuntimeHost_ExitProcess (RuntimeHost *This, INT exitcode)
 
HRESULT RuntimeHost_GetInterface (RuntimeHost *This, REFCLSID clsid, REFIID riid, void **ppv)
 
HRESULT RuntimeHost_GetIUnknownForObject (RuntimeHost *This, MonoObject *obj, IUnknown **ppUnk)
 
HRESULT RuntimeHost_CreateManagedInstance (RuntimeHost *This, LPCWSTR name, MonoDomain *domain, MonoObject **result)
 
HRESULT WINAPI CLRMetaHost_ExitProcess (ICLRMetaHost *iface, INT32 iExitCode)
 
HRESULT WINAPI CLRMetaHost_GetRuntime (ICLRMetaHost *iface, LPCWSTR pwzVersion, REFIID iid, LPVOID *ppRuntime)
 
HRESULT CorDebug_Create (ICLRRuntimeHost *runtimehost, IUnknown **ppUnk)
 
HRESULT create_monodata (REFCLSID clsid, LPVOID *ppObj)
 
HRESULT get_file_from_strongname (WCHAR *stringnameW, WCHAR *assemblies_path, int path_length)
 
void runtimehost_init (void)
 
void runtimehost_uninit (void)
 
void CDECL mono_print_handler_fn (const char *string, INT is_stdout)
 
void CDECL mono_log_handler_fn (const char *log_domain, const char *log_level, const char *message, INT fatal, void *user_data)
 

Variables

WCHAR ** private_path
 
BOOL is_mono_started
 
BOOL force
 
const charbase_dir
 
const char const charconfig_file_name
 
MonoAssemblyassembly
 
MonoAssembly int argc
 
MonoAssembly int charargv []
 

Macro Definition Documentation

◆ WINE_MONO_VERSION

#define WINE_MONO_VERSION   "9.4.0"

Definition at line 48 of file mscoree_private.h.

◆ WINE_PRELOAD_CONTINUE

#define WINE_PRELOAD_CONTINUE   0

Definition at line 146 of file mscoree_private.h.

◆ WINE_PRELOAD_SET_GAC

#define WINE_PRELOAD_SET_GAC   4

Definition at line 149 of file mscoree_private.h.

◆ WINE_PRELOAD_SKIP_GAC

#define WINE_PRELOAD_SKIP_GAC   2

Definition at line 148 of file mscoree_private.h.

◆ WINE_PRELOAD_SKIP_PRIVATE_PATH

#define WINE_PRELOAD_SKIP_PRIVATE_PATH   1

Definition at line 147 of file mscoree_private.h.

Typedef Documentation

◆ ASSEMBLY

Definition at line 37 of file mscoree_private.h.

◆ CLRRuntimeInfo

◆ CorDebug

◆ CorProcess

◆ MonoAssembly

typedef struct _MonoAssembly MonoAssembly

Definition at line 52 of file mscoree_private.h.

◆ MonoAssemblyName

typedef struct _MonoAssemblyName MonoAssemblyName

Definition at line 53 of file mscoree_private.h.

◆ MonoAssemblyPreLoadFunc

typedef MonoAssembly *(CDECL * MonoAssemblyPreLoadFunc) (MonoAssemblyName *aname, char **assemblies_path, void *user_data)

Definition at line 144 of file mscoree_private.h.

◆ MonoClass

typedef struct _MonoClass MonoClass

Definition at line 56 of file mscoree_private.h.

◆ MonoDomain

typedef struct _MonoDomain MonoDomain

Definition at line 51 of file mscoree_private.h.

◆ MonoImage

typedef struct _MonoImage MonoImage

Definition at line 55 of file mscoree_private.h.

◆ MonoLogCallback

typedef void(* MonoLogCallback) (const char *log_domain, const char *log_level, const char *message, INT fatal, void *user_data)

Definition at line 156 of file mscoree_private.h.

◆ MonoMethod

typedef struct _MonoMethod MonoMethod

Definition at line 59 of file mscoree_private.h.

◆ MonoObject

typedef struct _MonoObject MonoObject

Definition at line 57 of file mscoree_private.h.

◆ MonoPrintCallback

typedef void(CDECL * MonoPrintCallback) (const char *string, INT is_stdout)

Definition at line 155 of file mscoree_private.h.

◆ MonoProfileFunc

typedef void(CDECL * MonoProfileFunc) (MonoProfiler *prof)

Definition at line 153 of file mscoree_private.h.

◆ MonoProfiler

typedef struct _MonoProfiler MonoProfiler

Definition at line 60 of file mscoree_private.h.

◆ MonoString

typedef struct _MonoString MonoString

Definition at line 58 of file mscoree_private.h.

◆ MonoThread

typedef struct _MonoThread MonoThread

Definition at line 61 of file mscoree_private.h.

◆ MonoType

typedef struct _MonoType MonoType

Definition at line 54 of file mscoree_private.h.

◆ NativeEntryPointFunc

typedef BOOL(WINAPI * NativeEntryPointFunc) (HINSTANCE, DWORD, LPVOID)

Definition at line 39 of file mscoree_private.h.

◆ parsed_config_file

◆ RuntimeHost

Definition at line 63 of file mscoree_private.h.

◆ supported_runtime

◆ VTableFixup

◆ WineMonoAssemblyPreLoadFunc

typedef MonoAssembly *(CDECL * WineMonoAssemblyPreLoadFunc) (MonoAssemblyName *aname, char **assemblies_path, int *flags, void *user_data)

Definition at line 151 of file mscoree_private.h.

Enumeration Type Documentation

◆ MonoAotMode

Enumerator
MONO_AOT_MODE_NONE 
MONO_AOT_MODE_NORMAL 
MONO_AOT_MODE_HYBRID 
MONO_AOT_MODE_FULL 
MONO_AOT_MODE_LLVMONLY 
MONO_AOT_MODE_INTERP 
MONO_AOT_MODE_INTERP_LLVMONLY 
MONO_AOT_MODE_LLVMONLY_INTERP 
MONO_AOT_MODE_INTERP_ONLY 

Definition at line 158 of file mscoree_private.h.

158 {
MonoAotMode
@ MONO_AOT_MODE_NONE
@ MONO_AOT_MODE_INTERP
@ MONO_AOT_MODE_LLVMONLY
@ MONO_AOT_MODE_LLVMONLY_INTERP
@ MONO_AOT_MODE_NORMAL
@ MONO_AOT_MODE_INTERP_ONLY
@ MONO_AOT_MODE_FULL
@ MONO_AOT_MODE_HYBRID
@ MONO_AOT_MODE_INTERP_LLVMONLY

◆ MonoImageOpenStatus

Enumerator
MONO_IMAGE_OK 
MONO_IMAGE_ERROR_ERRNO 
MONO_IMAGE_MISSING_ASSEMBLYREF 
MONO_IMAGE_IMAGE_INVALID 

Definition at line 137 of file mscoree_private.h.

137 {
MonoImageOpenStatus
@ MONO_IMAGE_OK
@ MONO_IMAGE_MISSING_ASSEMBLYREF
@ MONO_IMAGE_ERROR_ERRNO
@ MONO_IMAGE_IMAGE_INVALID

Function Documentation

◆ assembly_create()

HRESULT assembly_create ( ASSEMBLY **  out,
LPCWSTR  file 
)

Definition at line 641 of file assembly.c.

642{
644 HRESULT hr;
645
646 *out = NULL;
647
648 if (!(assembly = heap_alloc_zero(sizeof(*assembly)))) return E_OUTOFMEMORY;
649
650 assembly->path = strdupW(file);
651 if (!assembly->path)
652 {
654 goto failed;
655 }
656
659 if (assembly->hfile == INVALID_HANDLE_VALUE)
660 {
662 goto failed;
663 }
664
666 0, 0, NULL);
667 if (!assembly->hmap)
668 {
670 goto failed;
671 }
672
673 assembly->data = MapViewOfFile(assembly->hmap, FILE_MAP_READ, 0, 0, 0);
674 if (!assembly->data)
675 {
677 goto failed;
678 }
679
681 if (FAILED(hr)) goto failed;
682
684 if (FAILED(hr)) goto failed;
685
686 *out = assembly;
687 return S_OK;
688
689failed:
691 return hr;
692}
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define NULL
Definition: types.h:112
#define PAGE_READONLY
Definition: compat.h:138
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:744
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
#define FILE_MAP_READ
Definition: compat.h:776
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
#define MapViewOfFile
Definition: compat.h:745
#define FILE_SHARE_READ
Definition: compat.h:136
HRESULT assembly_release(ASSEMBLY *assembly)
Definition: assembly.c:694
static HRESULT parse_pe_header(ASSEMBLY *assembly)
Definition: assembly.c:603
static HRESULT parse_clr_metadata(ASSEMBLY *assembly)
Definition: assembly.c:560
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
Definition: fci.c:127
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210

Referenced by CLRMetaHost_GetVersionFromFile(), and IAssemblyCacheImpl_InstallAssembly().

◆ assembly_from_hmodule()

HRESULT assembly_from_hmodule ( ASSEMBLY **  out,
HMODULE  hmodule 
)

Definition at line 244 of file assembly.c.

245{
247 HRESULT hr;
248
249 *out = NULL;
250
251 assembly = calloc(1, sizeof(ASSEMBLY));
252 if (!assembly)
253 return E_OUTOFMEMORY;
254
255 assembly->is_mapped_file = FALSE;
256
257 assembly->data = (BYTE*)hmodule;
258
260 if (SUCCEEDED(hr))
261 *out = assembly;
262 else
264
265 return hr;
266}
#define FALSE
Definition: types.h:117
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static HMODULE hmodule
Definition: rasapi.c:29
static HRESULT parse_headers(ASSEMBLY *assembly)
Definition: assembly.c:178
#define calloc
Definition: rosglue.h:14
unsigned char BYTE
Definition: xxhash.c:193

Referenced by _CorDllMain(), and FixupVTable().

◆ assembly_get_native_entrypoint()

HRESULT assembly_get_native_entrypoint ( ASSEMBLY assembly,
NativeEntryPointFunc func 
)

Definition at line 303 of file assembly.c.

304{
305 if (assembly->corhdr->Flags & COMIMAGE_FLAGS_NATIVE_ENTRYPOINT)
306 {
307 *func = assembly_rva_to_va(assembly, assembly->corhdr->EntryPointRVA);
308 return S_OK;
309 }
310 else
311 {
312 *func = NULL;
313 return S_FALSE;
314 }
315}
GLenum func
Definition: glext.h:6028
static void * assembly_rva_to_va(ASSEMBLY *assembly, ULONG rva)
Definition: assembly.c:80
#define S_FALSE
Definition: winerror.h:3451
@ COMIMAGE_FLAGS_NATIVE_ENTRYPOINT
Definition: winnt_old.h:3507

Referenced by _CorDllMain().

◆ assembly_get_runtime_version()

HRESULT assembly_get_runtime_version ( ASSEMBLY assembly,
LPSTR version 
)

Definition at line 865 of file assembly.c.

866{
867 *version = assembly->metadatahdr->Version;
868 return S_OK;
869}
static const WCHAR version[]
Definition: asmname.c:66

Referenced by CLRMetaHost_GetVersionFromFile(), and IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_vtable_fixups()

HRESULT assembly_get_vtable_fixups ( ASSEMBLY assembly,
VTableFixup **  fixups,
DWORD count 
)

Definition at line 293 of file assembly.c.

294{
295 ULONG size;
296
297 size = assembly_datadir_get_data(assembly, &assembly->corhdr->VTableFixups, (void**)fixups);
298 *count = size / sizeof(VTableFixup);
299
300 return S_OK;
301}
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
static ULONG assembly_datadir_get_data(ASSEMBLY *assembly, IMAGE_DATA_DIRECTORY *datadir, void **data)
Definition: assembly.c:88
struct _VTableFixup VTableFixup
uint32_t ULONG
Definition: typedefs.h:59

Referenced by FixupVTable_Assembly().

◆ assembly_release()

HRESULT assembly_release ( ASSEMBLY assembly)

Definition at line 694 of file assembly.c.

695{
696 if (!assembly)
697 return S_OK;
698
699 heap_free(assembly->metadatahdr);
700 heap_free(assembly->path);
702 CloseHandle(assembly->hmap);
703 CloseHandle(assembly->hfile);
705
706 return S_OK;
707}
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define CloseHandle
Definition: compat.h:739
#define UnmapViewOfFile
Definition: compat.h:746

Referenced by _CorDllMain(), assembly_create(), assembly_from_hmodule(), CLRMetaHost_GetVersionFromFile(), FixupVTable(), and IAssemblyCacheImpl_InstallAssembly().

◆ BOOL()

BOOL ( CDECL mono_domain_set)

◆ CLRMetaHost_CreateInstance()

HRESULT CLRMetaHost_CreateInstance ( REFIID  riid,
void **  ppobj 
)

Definition at line 1281 of file metahost.c.

1282{
1283 return ICLRMetaHost_QueryInterface(&GlobalCLRMetaHost.ICLRMetaHost_iface, riid, ppobj);
1284}
static struct CLRMetaHost GlobalCLRMetaHost
Definition: metahost.c:76
REFIID riid
Definition: atlbase.h:39

Referenced by CLRCreateInstance().

◆ CLRMetaHost_ExitProcess()

HRESULT WINAPI CLRMetaHost_ExitProcess ( ICLRMetaHost iface,
INT32  iExitCode 
)

Definition at line 1244 of file metahost.c.

1245{
1246 TRACE("%i\n", iExitCode);
1247
1249
1251 {
1252 /* search for a runtime and call System.Environment.Exit() */
1253 int i;
1254
1255 for (i=0; i<NUM_RUNTIMES; i++)
1256 if (runtimes[i].loaded_runtime)
1257 RuntimeHost_ExitProcess(runtimes[i].loaded_runtime, iExitCode);
1258 }
1259
1260 ExitProcess(iExitCode);
1261}
void RuntimeHost_ExitProcess(RuntimeHost *This, INT exitcode)
VOID WINAPI ExitProcess(IN UINT uExitCode)
Definition: proc.c:1331
static struct CLRRuntimeInfo runtimes[NUM_RUNTIMES]
Definition: metahost.c:52
static BOOL is_mono_shutdown
Definition: metahost.c:81
#define NUM_RUNTIMES
Definition: metahost.c:50
BOOL is_mono_started
Definition: metahost.c:80
static CRITICAL_SECTION runtime_list_cs
Definition: metahost.c:59
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define TRACE(s)
Definition: solgame.cpp:4
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by CorExitProcess().

◆ CLRMetaHost_GetRuntime()

HRESULT WINAPI CLRMetaHost_GetRuntime ( ICLRMetaHost iface,
LPCWSTR  pwzVersion,
REFIID  iid,
LPVOID ppRuntime 
)

Definition at line 1149 of file metahost.c.

1151{
1152 TRACE("%s %s %p\n", debugstr_w(pwzVersion), debugstr_guid(iid), ppRuntime);
1153
1154 return get_runtime(pwzVersion, FALSE, iid, ppRuntime);
1155}
static HRESULT get_runtime(LPCWSTR pwzVersion, BOOL allow_short, REFIID iid, LPVOID *ppRuntime)
Definition: metahost.c:1120
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32

Referenced by CreateDebuggingInterfaceFromVersion(), and get_runtime_info().

◆ CLRMetaHost_GetVersionFromFile()

HRESULT WINAPI CLRMetaHost_GetVersionFromFile ( ICLRMetaHost iface,
LPCWSTR  pwzFilePath,
LPWSTR  pwzBuffer,
DWORD pcchBuffer 
)

Definition at line 1157 of file metahost.c.

1159{
1161 HRESULT hr;
1162 LPSTR version;
1163 ULONG buffer_size=*pcchBuffer;
1164
1165 TRACE("%s %p %p\n", debugstr_w(pwzFilePath), pwzBuffer, pcchBuffer);
1166
1167 hr = assembly_create(&assembly, pwzFilePath);
1168
1169 if (SUCCEEDED(hr))
1170 {
1172
1173 if (SUCCEEDED(hr))
1174 {
1175 *pcchBuffer = MultiByteToWideChar(CP_UTF8, 0, version, -1, NULL, 0);
1176
1177 if (pwzBuffer)
1178 {
1179 if (buffer_size >= *pcchBuffer)
1180 MultiByteToWideChar(CP_UTF8, 0, version, -1, pwzBuffer, buffer_size);
1181 else
1183 }
1184 }
1185
1187 }
1188
1189 return hr;
1190}
#define MultiByteToWideChar
Definition: compat.h:110
MonoAssembly * assembly
Definition: metahost.c:107
HRESULT assembly_get_runtime_version(ASSEMBLY *assembly, LPSTR *version)
Definition: assembly.c:865
HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file)
Definition: assembly.c:641
#define CP_UTF8
Definition: nls.h:20
wchar_t const *const size_t const buffer_size
Definition: stat.cpp:95
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:3437
char * LPSTR
Definition: xmlstorage.h:182

Referenced by get_runtime_info(), and GetFileVersion().

◆ CLRMetaHostPolicy_CreateInstance()

HRESULT CLRMetaHostPolicy_CreateInstance ( REFIID  riid,
void **  ppobj 
)

Definition at line 1385 of file metahost.c.

1386{
1387 return ICLRMetaHostPolicy_QueryInterface(&GlobalCLRMetaHostPolicy.ICLRMetaHostPolicy_iface, riid, ppobj);
1388}
static struct CLRMetaHostPolicy GlobalCLRMetaHostPolicy
Definition: metahost.c:1291

Referenced by CLRCreateInstance().

◆ CorDebug_Create()

HRESULT CorDebug_Create ( ICLRRuntimeHost runtimehost,
IUnknown **  ppUnk 
)

Definition at line 763 of file cordebug.c.

764{
765 CorDebug *This;
766
767 This = malloc(sizeof *This);
768 if ( !This )
769 return E_OUTOFMEMORY;
770
771 This->ICorDebug_iface.lpVtbl = &cordebug_vtbl;
772 This->ICorDebugProcessEnum_iface.lpVtbl = &processenum_vtbl;
773 This->ref = 1;
774 This->pCallback = NULL;
775 This->pCallback2 = NULL;
776 This->runtimehost = runtimehost;
777
778 list_init(&This->processes);
779
780 if(This->runtimehost)
781 ICLRRuntimeHost_AddRef(This->runtimehost);
782
783 *ppUnk = (IUnknown*)&This->ICorDebug_iface;
784
785 return S_OK;
786}
static void list_init(struct list_entry *head)
Definition: list.h:51
static const struct ICorDebugProcessEnumVtbl processenum_vtbl
Definition: cordebug.c:524
static const struct ICorDebugVtbl cordebug_vtbl
Definition: cordebug.c:747
#define malloc
Definition: debug_ros.c:4

Referenced by RuntimeHost_GetInterface().

◆ create_monodata()

HRESULT create_monodata ( REFCLSID  clsid,
LPVOID ppObj 
)

Definition at line 1732 of file corruntimehost.c.

1733{
1734 static const WCHAR wszFileSlash[] = L"file:///";
1735 static const WCHAR wszCLSIDSlash[] = L"CLSID\\";
1736 static const WCHAR wszInprocServer32[] = L"\\InprocServer32";
1737 WCHAR path[CHARS_IN_GUID + ARRAY_SIZE(wszCLSIDSlash) + ARRAY_SIZE(wszInprocServer32) - 1];
1740 ICLRRuntimeInfo *info = NULL;
1742 HRESULT hr;
1743 HKEY key, subkey;
1744 LONG res;
1745 int offset = 0;
1747 DWORD numKeys, keyLength;
1748 WCHAR codebase[MAX_PATH + 8];
1749 WCHAR classname[350], subkeyName[256];
1751 DWORD dwBufLen;
1752
1753 lstrcpyW(path, wszCLSIDSlash);
1754 StringFromGUID2(clsid, path + lstrlenW(wszCLSIDSlash), CHARS_IN_GUID);
1755 lstrcatW(path, wszInprocServer32);
1756
1757 TRACE("Registry key: %s\n", debugstr_w(path));
1758
1761 {
1762 res = RegOpenKeyExW( key, L"Server", 0, KEY_READ, &subkey );
1763 if (res == ERROR_SUCCESS)
1764 {
1765 /* Not a managed class, just chain through LoadLibraryShim */
1767 HRESULT (WINAPI *pDllGetClassObject)(REFCLSID,REFIID,LPVOID*);
1768 IClassFactory *classfactory;
1769
1770 dwBufLen = sizeof( filename );
1771 res = RegGetValueW( subkey, NULL, NULL, RRF_RT_REG_SZ, NULL, filename, &dwBufLen );
1772
1773 RegCloseKey( subkey );
1774
1775 if (res != ERROR_SUCCESS)
1776 {
1777 WARN("Can't read default value from Server subkey.\n");
1779 goto cleanup;
1780 }
1781
1782 hr = LoadLibraryShim( filename, L"v4.0.30319", NULL, &module);
1783 if (FAILED(hr))
1784 {
1785 WARN("Can't load %s.\n", debugstr_w(filename));
1786 goto cleanup;
1787 }
1788
1789 pDllGetClassObject = (void*)GetProcAddress( module, "DllGetClassObject" );
1790 if (!pDllGetClassObject)
1791 {
1792 WARN("Can't get DllGetClassObject from %s.\n", debugstr_w(filename));
1794 goto cleanup;
1795 }
1796
1797 hr = pDllGetClassObject( clsid, &IID_IClassFactory, (void**)&classfactory );
1798 if (SUCCEEDED(hr))
1799 {
1800 hr = IClassFactory_CreateInstance( classfactory, NULL, &IID_IUnknown, ppObj );
1801
1802 IClassFactory_Release( classfactory );
1803 }
1804
1805 goto cleanup;
1806 }
1807
1808 dwBufLen = sizeof( classname );
1809 res = RegGetValueW( key, NULL, L"Class", RRF_RT_REG_SZ, NULL, classname, &dwBufLen);
1810 if(res != ERROR_SUCCESS)
1811 {
1812 WARN("Class value cannot be found.\n");
1814 goto cleanup;
1815 }
1816
1817 TRACE("classname (%s)\n", debugstr_w(classname));
1818
1819 dwBufLen = sizeof( codebase );
1820 res = RegGetValueW( key, NULL, L"CodeBase", RRF_RT_REG_SZ, NULL, codebase, &dwBufLen);
1821 if(res == ERROR_SUCCESS)
1822 {
1823 /* Strip file:/// */
1824 if(wcsncmp(codebase, wszFileSlash, lstrlenW(wszFileSlash)) == 0)
1825 offset = lstrlenW(wszFileSlash);
1826
1827 lstrcpyW(filename, codebase + offset);
1828
1830 }
1831
1834 else
1835 {
1836 WCHAR assemblyname[MAX_PATH + 8];
1837
1839 WARN("CodeBase value cannot be found, trying Assembly.\n");
1840 /* get the last subkey of InprocServer32 */
1841 res = RegQueryInfoKeyW(key, 0, 0, 0, &numKeys, 0, 0, 0, 0, 0, 0, 0);
1842 if (res != ERROR_SUCCESS)
1843 goto cleanup;
1844 if (numKeys > 0)
1845 {
1846 numKeys--;
1847 keyLength = ARRAY_SIZE(subkeyName);
1848 res = RegEnumKeyExW(key, numKeys, subkeyName, &keyLength, 0, 0, 0, 0);
1849 if (res != ERROR_SUCCESS)
1850 goto cleanup;
1851 res = RegOpenKeyExW(key, subkeyName, 0, KEY_READ, &subkey);
1852 if (res != ERROR_SUCCESS)
1853 goto cleanup;
1854 dwBufLen = sizeof( assemblyname );
1855 res = RegGetValueW(subkey, NULL, L"Assembly", RRF_RT_REG_SZ, NULL, assemblyname, &dwBufLen);
1856 RegCloseKey(subkey);
1857 if (res != ERROR_SUCCESS)
1858 goto cleanup;
1859 }
1860 else
1861 {
1862 dwBufLen = sizeof( assemblyname );
1863 res = RegGetValueW(key, NULL, L"Assembly", RRF_RT_REG_SZ, NULL, assemblyname, &dwBufLen);
1864 if (res != ERROR_SUCCESS)
1865 goto cleanup;
1866 }
1867
1868 hr = get_file_from_strongname(assemblyname, filename, MAX_PATH);
1869 if (FAILED(hr))
1870 {
1871 /*
1872 * The registry doesn't have a CodeBase entry or the file isn't there, and it's not in the GAC.
1873 *
1874 * Use the Assembly Key to retrieve the filename.
1875 * Assembly : REG_SZ : AssemblyName, Version=X.X.X.X, Culture=neutral, PublicKeyToken=null
1876 */
1877 WCHAR *ns;
1878
1879 WARN("Attempt to load from the application directory.\n");
1881 ns = wcsrchr(filename, '\\');
1882 *(ns+1) = '\0';
1883
1884 ns = wcschr(assemblyname, ',');
1885 *(ns) = '\0';
1886 lstrcatW(filename, assemblyname);
1887 *(ns) = '.';
1888 lstrcatW(filename, L".dll");
1889 }
1890 }
1891 }
1892 else
1893 {
1896
1897 TRACE("classname (%s)\n", debugstr_w(classname));
1898 }
1899
1900 TRACE("filename (%s)\n", debugstr_w(filename));
1901
1902 *ppObj = NULL;
1903
1904
1906 if (SUCCEEDED(hr))
1907 {
1909
1910 if (SUCCEEDED(hr))
1912
1913 if (SUCCEEDED(hr))
1914 {
1916 MonoClass *klass;
1918 MonoDomain *prev_domain;
1920 IUnknown *unk = NULL;
1921 char *filenameA, *ns;
1922 char *classA;
1923
1925
1926 prev_domain = domain_attach(domain);
1927
1930 free(filenameA);
1931 if (!assembly)
1932 {
1933 ERR("Cannot open assembly %s, status=%i\n", debugstr_w(filename), status);
1934 domain_restore(prev_domain);
1935 goto cleanup;
1936 }
1937
1939 if (!image)
1940 {
1941 ERR("Couldn't get assembly image\n");
1942 domain_restore(prev_domain);
1943 goto cleanup;
1944 }
1945
1946 classA = WtoA(classname);
1947 ns = strrchr(classA, '.');
1948 *ns = '\0';
1949
1950 klass = mono_class_from_name(image, classA, ns+1);
1951 free(classA);
1952 if (!klass)
1953 {
1954 ERR("Couldn't get class from image\n");
1955 domain_restore(prev_domain);
1956 goto cleanup;
1957 }
1958
1959 /*
1960 * Use the default constructor for the .NET class.
1961 */
1962 result = mono_object_new(domain, klass);
1963 mono_runtime_object_init(result);
1964
1966 if (SUCCEEDED(hr))
1967 {
1968 hr = IUnknown_QueryInterface(unk, &IID_IUnknown, ppObj);
1969
1970 IUnknown_Release(unk);
1971 }
1972 else
1974
1975 domain_restore(prev_domain);
1976 }
1977 else
1979 }
1980 else
1982
1983cleanup:
1984 if(info)
1985 ICLRRuntimeInfo_Release(info);
1986
1988
1989 return hr;
1990}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
Definition: registry.h:49
static MonoDomain * domain_attach(MonoDomain *domain)
static BOOL try_create_registration_free_com(REFIID clsid, WCHAR *classname, UINT classname_size, WCHAR *filename, UINT filename_size)
#define CHARS_IN_GUID
static HRESULT RuntimeHost_GetDefaultDomain(RuntimeHost *This, const WCHAR *config_path, MonoDomain **result)
HRESULT RuntimeHost_GetIUnknownForObject(RuntimeHost *This, MonoObject *obj, IUnknown **ppUnk)
static void domain_restore(MonoDomain *prev_domain)
#define free
Definition: debug_ros.c:5
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1931
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
Definition: reg.c:3662
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
Definition: combase.c:1525
#define wcschr
Definition: compat.h:17
#define wcsrchr
Definition: compat.h:16
#define GetProcAddress(x, y)
Definition: compat.h:753
#define MAX_PATH
Definition: compat.h:34
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750
static void cleanup(void)
Definition: main.c:1335
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
MonoObject *CDECL * mono_object_new(MonoDomain *domain, MonoClass *klass)
HRESULT get_runtime_info(LPCWSTR exefile, LPCWSTR version, LPCWSTR config_file, IStream *config_stream, DWORD startup_flags, DWORD runtimeinfo_flags, BOOL legacy, ICLRRuntimeInfo **result)
Definition: metahost.c:1904
MonoImage *CDECL * mono_assembly_get_image(MonoAssembly *assembly)
HRESULT get_file_from_strongname(WCHAR *stringnameW, WCHAR *assemblies_path, int path_length)
Definition: metahost.c:1687
MonoAssembly *CDECL * mono_assembly_open(const char *filename, MonoImageOpenStatus *status)
MonoClass *CDECL * mono_class_from_name(MonoImage *image, const char *name_space, const char *name)
HRESULT ICLRRuntimeInfo_GetRuntimeHost(ICLRRuntimeInfo *iface, RuntimeHost **result)
Definition: metahost.c:703
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
Definition: wcs.c:518
_ACRTIMP char *__cdecl strrchr(const char *, int)
Definition: string.c:3298
#define L(x)
Definition: resources.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
GLeglImageOES image
Definition: gl.h:2204
GLuint res
Definition: glext.h:9613
GLintptr offset
Definition: glext.h:5920
GLuint64EXT * result
Definition: glext.h:11304
const char * filename
Definition: ioapi.h:137
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
static CHAR filenameA[MAX_PATH]
Definition: storage32.c:35
char * WtoA(LPCWSTR wstr)
Definition: mscoree_main.c:63
HRESULT WINAPI LoadLibraryShim(LPCWSTR szDllName, LPCWSTR szVersion, LPVOID pvReserved, HMODULE *phModDll)
Definition: mscoree_main.c:464
struct _MonoObject MonoObject
struct _MonoAssembly MonoAssembly
struct _MonoImage MonoImage
struct _MonoDomain MonoDomain
struct _MonoClass MonoClass
const CLSID * clsid
Definition: msctf.cpp:50
#define KEY_READ
Definition: nt_native.h:1026
long LONG
Definition: pedump.c:60
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
WCHAR classname[128]
Definition: startup.c:15
Definition: cookie.c:42
Definition: txthost.c:37
Definition: copy.c:22
Definition: mxnamespace.c:38
Definition: ps.c:97
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772
#define RRF_RT_REG_SZ
Definition: winreg.h:58
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by DllGetClassObject().

◆ expect_no_runtimes()

void expect_no_runtimes ( void  )

Definition at line 454 of file metahost.c.

455{
457 {
458 ERR("Process exited with a Mono runtime loaded.\n");
459 return;
460 }
461}
static HMODULE mono_handle
Definition: metahost.c:78

Referenced by DllMain().

◆ free_parsed_config_file()

void free_parsed_config_file ( parsed_config_file file)

Definition at line 696 of file config.c.

697{
698 supported_runtime *cursor, *cursor2;
699
700 LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, &file->supported_runtimes, supported_runtime, entry)
701 {
702 free(cursor->version);
703 list_remove(&cursor->entry);
704 free(cursor);
705 }
706
707 free(file->private_path);
708}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
const char cursor[]
Definition: icontest.c:13
uint32_t entry
Definition: isohybrid.c:63
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204

Referenced by _CorExeMain(), and get_runtime_info().

◆ get_file_from_strongname()

HRESULT get_file_from_strongname ( WCHAR stringnameW,
WCHAR assemblies_path,
int  path_length 
)

Definition at line 1687 of file metahost.c.

1688{
1689 HRESULT hr=S_OK;
1690 IAssemblyCache *asmcache;
1692 static const WCHAR fusiondll[] = {'f','u','s','i','o','n',0};
1693 HMODULE hfusion=NULL;
1694 static HRESULT (WINAPI *pCreateAssemblyCache)(IAssemblyCache**,DWORD);
1695
1696 if (!pCreateAssemblyCache)
1697 {
1698 hr = LoadLibraryShim(fusiondll, NULL, NULL, &hfusion);
1699
1700 if (SUCCEEDED(hr))
1701 {
1702 pCreateAssemblyCache = (void*)GetProcAddress(hfusion, "CreateAssemblyCache");
1703 if (!pCreateAssemblyCache)
1704 hr = E_FAIL;
1705 }
1706 }
1707
1708 if (SUCCEEDED(hr))
1709 hr = pCreateAssemblyCache(&asmcache, 0);
1710
1711 if (SUCCEEDED(hr))
1712 {
1713 info.cbAssemblyInfo = sizeof(info);
1714 info.pszCurrentAssemblyPathBuf = assemblies_path;
1715 info.cchBuf = path_length;
1716 assemblies_path[0] = 0;
1717
1718 hr = IAssemblyCache_QueryAssemblyInfo(asmcache, 0, stringnameW, &info);
1719
1720 IAssemblyCache_Release(asmcache);
1721 }
1722
1723 return hr;
1724}
static long path_length
Definition: maze.c:116
#define E_FAIL
Definition: ddrawi.h:102
#define DWORD
Definition: nt_native.h:44

Referenced by create_monodata(), and wine_mono_assembly_preload_hook_v2_fn().

◆ get_mono_path()

BOOL get_mono_path ( LPWSTR  path,
BOOL  skip_local 
)

Definition at line 874 of file metahost.c.

875{
876#ifdef __REACTOS__
877 return (!skip_local && get_mono_path_local(path)) ||
880#else
881 return (!skip_local && get_mono_path_local(path)) ||
884 get_mono_path_unix(INSTALL_DATADIR "/wine/mono", path) ||
885 (strcmp(INSTALL_DATADIR, "/usr/share") &&
886 get_mono_path_unix("/usr/share/wine/mono", path)) ||
887 get_mono_path_unix("/opt/wine/mono", path);
888#endif
889}
static BOOL get_mono_path_unix(const char *unix_dir, LPWSTR path)
Definition: metahost.c:819
static BOOL get_mono_path_registry(LPWSTR path)
Definition: metahost.c:765
static BOOL get_mono_path_local(LPWSTR path)
Definition: metahost.c:747
static BOOL get_mono_path_datadir(LPWSTR path)
Definition: metahost.c:843
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3319

Referenced by CLRRuntimeInfo_GetRuntimeHost(), and install_wine_mono().

◆ get_root_domain()

MonoDomain * get_root_domain ( void  )

Definition at line 366 of file metahost.c.

367{
368 static MonoDomain* root_domain;
369
370 if (root_domain != NULL)
371 return root_domain;
372
374
375 if (root_domain == NULL)
376 {
377 char *exe_basename;
378
379 exe_basename = get_exe_basename_utf8();
380
381 root_domain = mono_jit_init_version(exe_basename, "v4.0.30319");
382
383 free(exe_basename);
384
386 }
387
389
390 return root_domain;
391}
#define TRUE
Definition: types.h:120
static char * get_exe_basename_utf8(void)
Definition: metahost.c:351
MonoDomain *CDECL * mono_jit_init_version(const char *domain_name, const char *runtime_version)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

Referenced by RuntimeHost_GetDefaultDomain().

◆ get_runtime_info()

HRESULT get_runtime_info ( LPCWSTR  exefile,
LPCWSTR  version,
LPCWSTR  config_file,
IStream config_stream,
DWORD  startup_flags,
DWORD  runtimeinfo_flags,
BOOL  legacy,
ICLRRuntimeInfo **  result 
)

Definition at line 1904 of file metahost.c.

1907{
1908 static const WCHAR dotconfig[] = {'.','c','o','n','f','i','g',0};
1909 static const DWORD supported_startup_flags = 0;
1910 static const DWORD supported_runtime_flags = RUNTIME_INFO_UPGRADE_VERSION;
1911 int i;
1912 WCHAR local_version[MAX_PATH];
1913 ULONG local_version_size = MAX_PATH;
1914 WCHAR local_config_file[MAX_PATH];
1915 HRESULT hr;
1916 parsed_config_file parsed_config;
1917
1918 if (startup_flags & ~supported_startup_flags)
1919 FIXME("unsupported startup flags %lx\n", startup_flags & ~supported_startup_flags);
1920
1921 if (runtimeinfo_flags & ~supported_runtime_flags)
1922 FIXME("unsupported runtimeinfo flags %lx\n", runtimeinfo_flags & ~supported_runtime_flags);
1923
1924 if (exefile && !exefile[0])
1925 exefile = NULL;
1926
1927 if (exefile && !config_file && !config_stream)
1928 {
1929 lstrcpyW(local_config_file, exefile);
1930 lstrcatW(local_config_file, dotconfig);
1931
1932 config_file = local_config_file;
1933 }
1934
1935 if (config_file || config_stream)
1936 {
1937 BOOL found = FALSE;
1938 if (config_file)
1939 hr = parse_config_file(config_file, &parsed_config);
1940 else
1941 hr = parse_config_stream(config_stream, &parsed_config);
1942
1943 if (SUCCEEDED(hr))
1944 {
1947 {
1948 hr = get_runtime(entry->version, TRUE, &IID_ICLRRuntimeInfo, (void**)result);
1949 if (SUCCEEDED(hr))
1950 {
1951 found = TRUE;
1952 break;
1953 }
1954 }
1955 }
1956 else
1957 {
1958 WARN("failed to parse config file %s, hr=%lx\n", debugstr_w(config_file), hr);
1959 }
1960
1961 free_parsed_config_file(&parsed_config);
1962
1963 if (found)
1964 return S_OK;
1965 }
1966
1967 if (exefile && !version)
1968 {
1970
1971 hr = CLRMetaHost_GetVersionFromFile(0, exefile, local_version, &local_version_size);
1972
1973 version = local_version;
1974
1975 if (FAILED(hr)) return hr;
1976
1977 /* When running an executable, specifically when getting the version number from
1978 * the exe, native accepts a matching major.minor with build <= expected build. */
1980 {
1981 ERR("Cannot parse %s\n", debugstr_w(version));
1982 return CLR_E_SHIM_RUNTIME;
1983 }
1984
1985 if (legacy)
1986 i = 3;
1987 else
1988 i = NUM_RUNTIMES;
1989
1990 while (i--)
1991 {
1992 if (runtimes[i].major == major && runtimes[i].minor == minor && runtimes[i].build >= build)
1993 {
1994 return ICLRRuntimeInfo_QueryInterface(&runtimes[i].ICLRRuntimeInfo_iface,
1995 &IID_ICLRRuntimeInfo, (void **)result);
1996 }
1997 }
1998 }
1999
2000 if (version)
2001 {
2002 hr = CLRMetaHost_GetRuntime(0, version, &IID_ICLRRuntimeInfo, (void**)result);
2003 if(SUCCEEDED(hr))
2004 return hr;
2005 }
2006
2007 if (runtimeinfo_flags & RUNTIME_INFO_UPGRADE_VERSION)
2008 {
2010
2012 {
2013 ERR("Cannot parse %s\n", debugstr_w(version));
2014 return CLR_E_SHIM_RUNTIME;
2015 }
2016
2017 if (legacy)
2018 i = 3;
2019 else
2020 i = NUM_RUNTIMES;
2021
2022 while (i--)
2023 {
2024 /* Must be greater or equal to the version passed in. */
2025 if (!version || ((runtimes[i].major >= major && runtimes[i].minor >= minor && runtimes[i].build >= build) ||
2026 (runtimes[i].major >= major && runtimes[i].minor > minor) ||
2027 (runtimes[i].major > major)))
2028 {
2029 return ICLRRuntimeInfo_QueryInterface(&runtimes[i].ICLRRuntimeInfo_iface,
2030 &IID_ICLRRuntimeInfo, (void **)result);
2031 }
2032 }
2033
2034 return CLR_E_SHIM_RUNTIME;
2035 }
2036
2037 return CLR_E_SHIM_RUNTIME;
2038}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define CLR_E_SHIM_RUNTIME
Definition: corerror.h:226
HRESULT parse_config_stream(IStream *stream, parsed_config_file *result)
Definition: config.c:658
HRESULT parse_config_file(LPCWSTR filename, parsed_config_file *result)
Definition: config.c:678
void free_parsed_config_file(parsed_config_file *file)
Definition: config.c:696
static BOOL parse_runtime_version(LPCWSTR version, DWORD *major, DWORD *minor, DWORD *build)
Definition: metahost.c:1081
HRESULT WINAPI CLRMetaHost_GetVersionFromFile(ICLRMetaHost *iface, LPCWSTR pwzFilePath, LPWSTR pwzBuffer, DWORD *pcchBuffer)
Definition: metahost.c:1157
WORD WORD * build
Definition: metahost.c:91
WORD * minor
Definition: metahost.c:91
HRESULT WINAPI CLRMetaHost_GetRuntime(ICLRMetaHost *iface, LPCWSTR pwzVersion, REFIID iid, LPVOID *ppRuntime)
Definition: metahost.c:1149
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL legacy
Definition: mkisofs.c:131
@ RUNTIME_INFO_UPGRADE_VERSION
Definition: mscoree.idl:40
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define major(rdev)
Definition: propsheet.cpp:928
struct list supported_runtimes

Referenced by _CorExeMain(), ClrCreateManagedInstance(), CorBindToCurrentRuntime(), CorBindToRuntimeEx(), CorBindToRuntimeHost(), create_monodata(), GetCORSystemDirectory(), GetCORVersion(), GetRequestedRuntimeInfo(), metahostpolicy_GetRequestedRuntime(), and ReallyFixupVTable().

◆ ICLRRuntimeInfo_GetRuntimeHost()

HRESULT ICLRRuntimeInfo_GetRuntimeHost ( ICLRRuntimeInfo *  iface,
RuntimeHost **  result 
)

Definition at line 703 of file metahost.c.

704{
706
707 assert(This->ICLRRuntimeInfo_iface.lpVtbl == &CLRRuntimeInfoVtbl);
708
710}
static const struct ICLRRuntimeInfoVtbl CLRRuntimeInfoVtbl
Definition: metahost.c:48
static HRESULT CLRRuntimeInfo_GetRuntimeHost(CLRRuntimeInfo *This, RuntimeHost **result)
Definition: metahost.c:410
static CLRRuntimeInfo * impl_from_ICLRRuntimeInfo(ICLRRuntimeInfo *iface)
Definition: metahost.c:463
#define assert(_expr)
Definition: assert.h:32

Referenced by _CorExeMain(), ClrCreateManagedInstance(), create_monodata(), and ReallyFixupVTable().

◆ int()

int ( CDECL mono_jit_exec)

◆ MetaDataDispenser_CreateInstance()

HRESULT MetaDataDispenser_CreateInstance ( IUnknown **  ppUnk)

Definition at line 189 of file metadata.c.

190{
192
193 This = malloc(sizeof(MetaDataDispenser));
194
195 if (!This)
196 return E_OUTOFMEMORY;
197
198 This->IMetaDataDispenserEx_iface.lpVtbl = &MetaDataDispenserVtbl;
199 This->ref = 1;
200
201 *ppUnk = (IUnknown*)&This->IMetaDataDispenserEx_iface;
202
203 return S_OK;
204}
static const struct IMetaDataDispenserExVtbl MetaDataDispenserVtbl
Definition: metadata.c:173

Referenced by RuntimeHost_GetInterface().

◆ mono_assembly_get_image()

MonoImage *CDECL * mono_assembly_get_image ( MonoAssembly assembly)

◆ mono_assembly_load_from()

MonoAssembly *CDECL * mono_assembly_load_from ( MonoImage image,
const char fname,
MonoImageOpenStatus status 
)

◆ mono_assembly_name_get_name()

const char *CDECL * mono_assembly_name_get_name ( MonoAssemblyName aname)

◆ mono_assembly_open()

MonoAssembly *CDECL * mono_assembly_open ( const char filename,
MonoImageOpenStatus status 
)

◆ mono_class_from_mono_type()

MonoClass *CDECL * mono_class_from_mono_type ( MonoType type)

◆ mono_class_from_name()

MonoClass *CDECL * mono_class_from_name ( MonoImage image,
const char name_space,
const char name 
)

◆ mono_class_get_method_from_name()

MonoMethod *CDECL * mono_class_get_method_from_name ( MonoClass klass,
const char name,
int  param_count 
)

◆ mono_domain_get()

MonoDomain *CDECL * mono_domain_get ( void  )

◆ mono_domain_get_by_id()

MonoDomain *CDECL * mono_domain_get_by_id ( int  id)

◆ mono_get_corlib()

MonoImage *CDECL * mono_get_corlib ( void  )

◆ mono_image_open_from_module_handle()

MonoImage *CDECL * mono_image_open_from_module_handle ( HMODULE  module_handle,
char fname,
UINT  has_entry_point,
MonoImageOpenStatus status 
)

◆ mono_jit_init_version()

MonoDomain *CDECL * mono_jit_init_version ( const char domain_name,
const char runtime_version 
)

◆ mono_log_handler_fn()

void CDECL mono_log_handler_fn ( const char log_domain,
const char log_level,
const char message,
INT  fatal,
void user_data 
)

Definition at line 265 of file mscoree_main.c.

266{
267 SIZE_T len = (log_domain ? strlen(log_domain) + 2 : 0) + strlen(message) + strlen("\n") + 1;
268 char *msg = calloc(len, sizeof(char));
269
270 if (msg)
271 {
272 sprintf(msg, "%s%s%s\n", log_domain ? log_domain : "", log_domain ? ": " : "", message);
274 }
275
276 free(msg);
277}
#define msg(x)
Definition: auth_time.c:54
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1592
GLenum GLsizei len
Definition: glext.h:6722
#define sprintf
Definition: sprintf.c:45
void CDECL mono_print_handler_fn(const char *string, INT is_stdout)
Definition: mscoree_main.c:225
Definition: tftpd.h:60
ULONG_PTR SIZE_T
Definition: typedefs.h:80

Referenced by load_mono().

◆ mono_marshal_get_vtfixup_ftnptr()

void *CDECL * mono_marshal_get_vtfixup_ftnptr ( MonoImage image,
DWORD  token,
WORD  type 
)

◆ mono_object_get_domain()

MonoDomain *CDECL * mono_object_get_domain ( MonoObject obj)

◆ mono_object_get_virtual_method()

MonoMethod *CDECL * mono_object_get_virtual_method ( MonoObject obj,
MonoMethod method 
)

◆ mono_object_new()

MonoObject *CDECL * mono_object_new ( MonoDomain domain,
MonoClass klass 
)

◆ mono_object_unbox()

void *CDECL * mono_object_unbox ( MonoObject obj)

◆ mono_print_handler_fn()

void CDECL mono_print_handler_fn ( const char string,
INT  is_stdout 
)

Definition at line 225 of file mscoree_main.c.

226{
228
229 if (!tls)
230 {
231 tls = malloc(sizeof(*tls));
232 tls->length = 0;
234 }
235
236 while (*string)
237 {
238 int remaining_buffer = sizeof(tls->buffer) - tls->length;
239 int length = strlen(string);
240 const char *newline = memchr(string, '\n', min(length, remaining_buffer));
241
242 if (newline)
243 {
244 length = newline - string + 1;
245 wine_dbg_printf("%.*s%.*s", tls->length, tls->buffer, length, string);
246 tls->length = 0;
247 string += length;
248 }
249 else if (length > remaining_buffer)
250 {
251 /* this would overflow Wine's debug buffer */
252 wine_dbg_printf("%.*s%.*s\n", tls->length, tls->buffer, remaining_buffer, string);
253 tls->length = 0;
254 string += remaining_buffer;
255 }
256 else
257 {
258 memcpy(tls->buffer + tls->length, string, length);
259 tls->length += length;
260 break;
261 }
262 }
263}
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1240
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
Definition: thread.c:1276
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define memchr(s, c, n)
Definition: mkisofs.h:875
#define min(a, b)
Definition: monoChain.cc:55
static DWORD print_tls_index
Definition: mscoree_main.c:59
const char int wine_dbg_printf(const char *format,...) __WINE_PRINTF_ATTR(1
static DWORD tls
Definition: sock.c:229

Referenced by load_mono(), and mono_log_handler_fn().

◆ mono_reflection_type_from_name()

MonoType *CDECL * mono_reflection_type_from_name ( char name,
MonoImage image 
)

◆ mono_runtime_invoke()

MonoObject *CDECL * mono_runtime_invoke ( MonoMethod method,
void obj,
void **  params,
MonoObject **  exc 
)

◆ mono_string_new()

MonoString *CDECL * mono_string_new ( MonoDomain domain,
const char str 
)

◆ mono_thread_attach()

MonoThread *CDECL * mono_thread_attach ( MonoDomain domain)

◆ parse_config_file()

HRESULT parse_config_file ( LPCWSTR  filename,
parsed_config_file result 
)

Definition at line 678 of file config.c.

679{
680 HRESULT hr;
682
684
686 if (FAILED(hr))
687 return hr;
688
690
691 IStream_Release(stream);
692
693 return hr;
694}
HRESULT WINAPI CreateConfigStream(const WCHAR *filename, IStream **stream)
Definition: config.c:220
static void init_config(parsed_config_file *config)
Definition: config.c:614
Definition: parse.h:23

Referenced by _CorExeMain(), and get_runtime_info().

◆ parse_config_stream()

HRESULT parse_config_stream ( IStream stream,
parsed_config_file result 
)

Definition at line 658 of file config.c.

659{
660 VARIANT var;
661 HRESULT hr;
662 HRESULT initresult;
663
665
667 V_VT(&var) = VT_UNKNOWN;
669
671
672 if (SUCCEEDED(initresult))
674
675 return hr;
676}
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
Definition: combase.c:2803
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
@ VT_UNKNOWN
Definition: compat.h:2308
static HRESULT parse_config(VARIANT input, parsed_config_file *result)
Definition: config.c:620
const char * var
Definition: shader.c:5666
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:279
#define V_UNKNOWN(A)
Definition: oleauto.h:281
#define V_VT(A)
Definition: oleauto.h:211

Referenced by get_runtime_info(), and parse_config_file().

◆ RuntimeHost_Construct()

HRESULT RuntimeHost_Construct ( CLRRuntimeInfo runtime_version,
RuntimeHost **  result 
)

Definition at line 1596 of file corruntimehost.c.

1597{
1599
1600 This = malloc(sizeof *This);
1601 if ( !This )
1602 return E_OUTOFMEMORY;
1603
1604 This->ICorRuntimeHost_iface.lpVtbl = &corruntimehost_vtbl;
1605 This->ICLRRuntimeHost_iface.lpVtbl = &CLRHostVtbl;
1606
1607 This->ref = 1;
1608 This->version = runtime_version;
1610 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": RuntimeHost.lock");
1611
1612 *result = This;
1613
1614 return S_OK;
1615}
static const struct ICorRuntimeHostVtbl corruntimehost_vtbl
static const struct ICLRRuntimeHostVtbl CLRHostVtbl
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
#define DWORD_PTR
Definition: treelist.c:76
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156

Referenced by CLRRuntimeInfo_GetRuntimeHost().

◆ RuntimeHost_CreateManagedInstance()

HRESULT RuntimeHost_CreateManagedInstance ( RuntimeHost This,
LPCWSTR  name,
MonoDomain domain,
MonoObject **  result 
)

Definition at line 976 of file corruntimehost.c.

978{
980 char *nameA=NULL;
981 MonoType *type;
982 MonoClass *klass;
984 MonoDomain *prev_domain;
985
986 if (!domain)
988
989 if (FAILED(hr))
990 return hr;
991
992 prev_domain = domain_attach(domain);
993
994 if (SUCCEEDED(hr))
995 {
996 nameA = WtoA(name);
997 if (!nameA)
999 }
1000
1001 if (SUCCEEDED(hr))
1002 {
1004 if (!type)
1005 {
1006 ERR("Cannot find type %s\n", debugstr_w(name));
1007 hr = E_FAIL;
1008 }
1009 }
1010
1011 if (SUCCEEDED(hr))
1012 {
1014 if (!klass)
1015 {
1016 ERR("Cannot convert type %s to a class\n", debugstr_w(name));
1017 hr = E_FAIL;
1018 }
1019 }
1020
1021 if (SUCCEEDED(hr))
1022 {
1023 obj = mono_object_new(domain, klass);
1024 if (!obj)
1025 {
1026 ERR("Cannot allocate object of type %s\n", debugstr_w(name));
1027 hr = E_FAIL;
1028 }
1029 }
1030
1031 if (SUCCEEDED(hr))
1032 {
1033 /* FIXME: Detect exceptions from the constructor? */
1034 mono_runtime_object_init(obj);
1035 *result = obj;
1036 }
1037
1038 domain_restore(prev_domain);
1039
1040 free(nameA);
1041
1042 return hr;
1043}
MonoType *CDECL * mono_reflection_type_from_name(char *name, MonoImage *image)
MonoClass *CDECL * mono_class_from_mono_type(MonoType *type)
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
struct _MonoType MonoType
Definition: name.c:39

Referenced by ClrCreateManagedInstance(), and corruntimehost_CreateDomainSetup().

◆ RuntimeHost_ExitProcess()

void RuntimeHost_ExitProcess ( RuntimeHost This,
INT  exitcode 
)

Definition at line 474 of file corruntimehost.c.

475{
476 HRESULT hr;
477 void *args[2];
480
482 if (FAILED(hr))
483 {
484 ERR("Cannot get domain, hr=%lx\n", hr);
485 return;
486 }
487
488 args[0] = &exitcode;
489 args[1] = NULL;
490 RuntimeHost_Invoke(This, domain, NULL, "System", "Environment", "Exit",
491 NULL, args, 1, &dummy);
492
493 ERR("Process should have exited\n");
494}
static HRESULT RuntimeHost_Invoke(RuntimeHost *This, MonoDomain *domain, const char *assemblyname, const char *namespace, const char *typename, const char *methodname, MonoObject *obj, void **args, int arg_count, MonoObject **result)
Definition: match.c:390

Referenced by CLRMetaHost_ExitProcess().

◆ RuntimeHost_GetInterface()

HRESULT RuntimeHost_GetInterface ( RuntimeHost This,
REFCLSID  clsid,
REFIID  riid,
void **  ppv 
)

Definition at line 1617 of file corruntimehost.c.

1618{
1619 IUnknown *unk;
1620 HRESULT hr;
1621
1622 if (IsEqualGUID(clsid, &CLSID_CorRuntimeHost))
1623 {
1624 unk = (IUnknown*)&This->ICorRuntimeHost_iface;
1625 IUnknown_AddRef(unk);
1626 }
1627 else if (IsEqualGUID(clsid, &CLSID_CLRRuntimeHost))
1628 {
1629 unk = (IUnknown*)&This->ICLRRuntimeHost_iface;
1630 IUnknown_AddRef(unk);
1631 }
1632 else if (IsEqualGUID(clsid, &CLSID_CorMetaDataDispenser) ||
1633 IsEqualGUID(clsid, &CLSID_CorMetaDataDispenserRuntime))
1634 {
1636 if (FAILED(hr))
1637 return hr;
1638 }
1639 else if (IsEqualGUID(clsid, &CLSID_CLRDebuggingLegacy))
1640 {
1641 hr = CorDebug_Create(&This->ICLRRuntimeHost_iface, &unk);
1642 if (FAILED(hr))
1643 return hr;
1644 }
1645 else
1646 unk = NULL;
1647
1648 if (unk)
1649 {
1650 hr = IUnknown_QueryInterface(unk, riid, ppv);
1651
1652 IUnknown_Release(unk);
1653
1654 return hr;
1655 }
1656 else
1657 FIXME("not implemented for class %s\n", debugstr_guid(clsid));
1658
1660}
HRESULT CorDebug_Create(ICLRRuntimeHost *runtimehost, IUnknown **ppUnk)
Definition: cordebug.c:763
HRESULT MetaDataDispenser_CreateInstance(IUnknown **ppUnk)
Definition: metadata.c:189
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

Referenced by CLRRuntimeInfo_GetInterface().

◆ RuntimeHost_GetIUnknownForObject()

HRESULT RuntimeHost_GetIUnknownForObject ( RuntimeHost This,
MonoObject obj,
IUnknown **  ppUnk 
)

Definition at line 1053 of file corruntimehost.c.

1055{
1058 HRESULT hr;
1059
1061
1062 hr = RuntimeHost_Invoke(This, domain, NULL, "System.Runtime.InteropServices", "Marshal", "GetIUnknownForObject",
1063 NULL, (void**)&obj, 1, &result);
1064
1065 if (SUCCEEDED(hr))
1066 *ppUnk = *(IUnknown**)mono_object_unbox(result);
1067 else
1068 *ppUnk = NULL;
1069
1070 return hr;
1071}
MonoDomain *CDECL * mono_object_get_domain(MonoObject *obj)
void *CDECL * mono_object_unbox(MonoObject *obj)

Referenced by ClrCreateManagedInstance(), corruntimehost_CreateDomainSetup(), create_monodata(), and RuntimeHost_GetIUnknownForDomain().

◆ runtimehost_init()

void runtimehost_init ( void  )

Definition at line 1577 of file corruntimehost.c.

1578{
1581}
static HANDLE dll_fixup_heap
static struct list dll_fixups
HANDLE WINAPI HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize)
Definition: heapmem.c:45
#define HEAP_CREATE_ENABLE_EXECUTE
Definition: rtltypes.h:135

Referenced by DllMain().

◆ runtimehost_uninit()

void runtimehost_uninit ( void  )

Definition at line 1584 of file corruntimehost.c.

1585{
1586 struct dll_fixup *fixup, *fixup2;
1587
1590 {
1591 free(fixup->tokens);
1592 free(fixup);
1593 }
1594}
BOOL WINAPI HeapDestroy(HANDLE hHeap)
Definition: heapmem.c:85
VTableFixup * fixup

Referenced by DllMain().

◆ void()

void ( CDECL mono_callspec_set_assembly)

◆ WtoA()

char * WtoA ( const WCHAR wstr)

Variable Documentation

◆ argc

Definition at line 185 of file mscoree_private.h.

◆ argv

Definition at line 185 of file mscoree_private.h.

◆ assembly

Definition at line 185 of file mscoree_private.h.

◆ base_dir

const char* base_dir

Definition at line 183 of file mscoree_private.h.

◆ config_file_name

const char const char* config_file_name

Definition at line 183 of file mscoree_private.h.

◆ force

BOOL force

Definition at line 182 of file mscoree_private.h.

◆ is_mono_started

BOOL is_mono_started
extern

◆ private_path

WCHAR** private_path
extern

Definition at line 70 of file corruntimehost.c.

Referenced by _CorExeMain(), and wine_mono_assembly_preload_hook_v2_fn().