ReactOS  0.4.14-dev-114-gc8cbd56
mscoree_private.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2008 Alistair Leslie-Hughes
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19 
20 #ifndef __MSCOREE_PRIVATE__
21 #define __MSCOREE_PRIVATE__
22 
23 #include <stdarg.h>
24 
25 #define WIN32_NO_STATUS
26 #define _INC_WINDOWS
27 #define COM_NO_WINDOWS_H
28 
29 #define COBJMACROS
30 
31 #include <windef.h>
32 #include <winbase.h>
33 #include <winreg.h>
34 #include <objbase.h>
35 #include <cor.h>
36 #include <cordebug.h>
37 #include <metahost.h>
38 
39 #include <wine/list.h>
40 #include <wine/unicode.h>
41 
42 #include <wine/debug.h>
44 
45 extern char *WtoA(LPCWSTR wstr) DECLSPEC_HIDDEN;
46 
48 
50  LPCWSTR pwzFilePath, LPWSTR pwzBuffer, DWORD *pcchBuffer) DECLSPEC_HIDDEN;
51 
52 typedef struct _VTableFixup {
56 } VTableFixup;
57 
58 typedef struct tagASSEMBLY ASSEMBLY;
59 
65 
66 /* Mono embedding */
67 typedef struct _MonoDomain MonoDomain;
68 typedef struct _MonoAssembly MonoAssembly;
69 typedef struct _MonoAssemblyName MonoAssemblyName;
70 typedef struct _MonoType MonoType;
71 typedef struct _MonoImage MonoImage;
72 typedef struct _MonoClass MonoClass;
73 typedef struct _MonoObject MonoObject;
74 typedef struct _MonoString MonoString;
75 typedef struct _MonoMethod MonoMethod;
76 typedef struct _MonoProfiler MonoProfiler;
77 typedef struct _MonoThread MonoThread;
78 
79 typedef struct loaded_mono loaded_mono;
80 typedef struct RuntimeHost RuntimeHost;
81 
82 typedef struct CLRRuntimeInfo
83 {
94 
96 {
101  struct list domains;
105 };
106 
107 typedef struct CorProcess
108 {
109  struct list entry;
111 } CorProcess;
112 
113 typedef struct CorDebug
114 {
118 
120 
121  /* ICorDebug Callback */
124 
125  /* Debug Processes */
126  struct list processes;
127 } CorDebug;
128 
129 extern HRESULT get_runtime_info(LPCWSTR exefile, LPCWSTR version, LPCWSTR config_file,
130  DWORD startup_flags, DWORD runtimeinfo_flags, BOOL legacy, ICLRRuntimeInfo **result) DECLSPEC_HIDDEN;
131 
133 
135 
136 typedef struct parsed_config_file
137 {
140 
141 typedef struct supported_runtime
142 {
143  struct list entry;
146 
148 
150 
151 typedef enum {
157 
158 typedef MonoAssembly* (*MonoAssemblyPreLoadFunc)(MonoAssemblyName *aname, char **assemblies_path, void *user_data);
159 
161 
163 {
166 
169 
174  MonoClass* (CDECL *mono_class_from_name)(MonoImage *image, const char* name_space, const char *name);
175  MonoMethod* (CDECL *mono_class_get_method_from_name)(MonoClass *klass, const char *name, int param_count);
176  void (CDECL *mono_config_parse)(const char *filename);
177  MonoAssembly* (CDECL *mono_domain_assembly_open) (MonoDomain *domain, const char *name);
178  void (CDECL *mono_free)(void *);
179  MonoImage* (CDECL *mono_image_open_from_module_handle)(HMODULE module_handle, char* fname, UINT has_entry_point, MonoImageOpenStatus* status);
180  void (CDECL *mono_install_assembly_preload_hook)(MonoAssemblyPreLoadFunc func, void *user_data);
181  int (CDECL *mono_jit_exec)(MonoDomain *domain, MonoAssembly *assembly, int argc, char *argv[]);
182  MonoDomain* (CDECL *mono_jit_init)(const char *file);
183  int (CDECL *mono_jit_set_trace_options)(const char* options);
186  MonoObject* (CDECL *mono_object_new)(MonoDomain *domain, MonoClass *klass);
188  void (CDECL *mono_profiler_install)(MonoProfiler *prof, MonoProfileFunc shutdown_callback);
191  void (CDECL *mono_runtime_object_init)(MonoObject *this_obj);
192  void (CDECL *mono_runtime_quit)(void);
193  void (CDECL *mono_runtime_set_shutting_down)(void);
194  void (CDECL *mono_set_dirs)(const char *assembly_dir, const char *config_dir);
196  void (CDECL *mono_thread_pool_cleanup)(void);
197  void (CDECL *mono_thread_suspend_all_other_threads)(void);
198  void (CDECL *mono_threads_set_shutting_down)(void);
199  MonoString* (CDECL *mono_string_new)(MonoDomain *domain, const char *str);
201 };
202 
203 /* loaded runtime interfaces */
204 extern void unload_all_runtimes(void) DECLSPEC_HIDDEN;
205 
206 extern void expect_no_runtimes(void) DECLSPEC_HIDDEN;
207 
208 extern HRESULT RuntimeHost_Construct(const CLRRuntimeInfo *runtime_version,
210 
212 
214 
217 
219 
221 
222 extern HRESULT CorDebug_Create(ICLRRuntimeHost *runtimehost, IUnknown** ppUnk) DECLSPEC_HIDDEN;
223 
225 
226 extern void runtimehost_init(void);
227 extern void runtimehost_uninit(void);
228 
229 #endif /* __MSCOREE_PRIVATE__ */
GLenum func
Definition: glext.h:6028
MonoThread *CDECL * mono_thread_attach(MonoDomain *domain)
#define REFIID
Definition: guiddef.h:118
void(* MonoProfileFunc)(MonoProfiler *prof)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
HRESULT create_monodata(REFIID riid, LPVOID *ppObj) DECLSPEC_HIDDEN
MonoDomain * default_domain
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
HRESULT assembly_get_vtable_fixups(ASSEMBLY *assembly, VTableFixup **fixups, DWORD *count) DECLSPEC_HIDDEN
Definition: assembly.c:294
ICLRRuntimeHost * runtimehost
MonoAssembly int char * argv[]
HRESULT assembly_get_runtime_version(ASSEMBLY *assembly, LPSTR *version) DECLSPEC_HIDDEN
Definition: assembly.c:881
HRESULT parse_config_file(LPCWSTR filename, parsed_config_file *result) DECLSPEC_HIDDEN
Definition: config.c:419
WCHAR mono_path[MAX_PATH]
struct _VTableFixup VTableFixup
REFIID riid
Definition: precomp.h:44
MonoImage *CDECL * mono_assembly_get_image(MonoAssembly *assembly)
#define REFCLSID
Definition: guiddef.h:117
MonoMethod *CDECL * mono_class_get_method_from_name(MonoClass *klass, const char *name, int param_count)
GLuint GLuint GLsizei count
Definition: gl.h:1545
ICorDebugManagedCallback * pCallback
REFIID LPVOID * ppv
Definition: atlbase.h:39
const char * config_dir
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
HRESULT ICLRRuntimeInfo_GetRuntimeHost(ICLRRuntimeInfo *iface, RuntimeHost **result) DECLSPEC_HIDDEN
Definition: metahost.c:544
HRESULT MetaDataDispenser_CreateInstance(IUnknown **ppUnk) DECLSPEC_HIDDEN
Definition: metadata.c:169
char * LPSTR
Definition: xmlstorage.h:182
const char * filename
Definition: ioapi.h:135
MonoType *CDECL * mono_reflection_type_from_name(char *name, MonoImage *image)
ICorDebugProcess * pProcess
ICorDebug ICorDebug_iface
void free_parsed_config_file(parsed_config_file *file) DECLSPEC_HIDDEN
Definition: config.c:448
HMODULE mono_handle
WCHAR mscorlib_path[MAX_PATH]
struct CorProcess CorProcess
HRESULT RuntimeHost_Destroy(RuntimeHost *This) DECLSPEC_HIDDEN
MonoClass *CDECL * mono_class_from_mono_type(MonoType *type)
HRESULT assembly_release(ASSEMBLY *assembly) DECLSPEC_HIDDEN
Definition: assembly.c:693
GLenum const GLfloat * params
Definition: glext.h:5645
void runtimehost_uninit(void)
MonoAssembly *CDECL * mono_assembly_open(const char *filename, MonoImageOpenStatus *status)
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
MonoAssembly *CDECL * mono_domain_assembly_open(MonoDomain *domain, const char *name)
struct _MonoAssemblyName MonoAssemblyName
char * WtoA(LPCWSTR wstr) DECLSPEC_HIDDEN
Definition: mscoree_main.c:30
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 token
Definition: glfuncs.h:210
static HMODULE hmodule
Definition: rasapi.c:29
HRESULT assembly_from_hmodule(ASSEMBLY **out, HMODULE hmodule) DECLSPEC_HIDDEN
Definition: assembly.c:245
HRESULT RuntimeHost_Construct(const CLRRuntimeInfo *runtime_version, loaded_mono *loaded_mono, RuntimeHost **result) DECLSPEC_HIDDEN
const WCHAR * str
MonoProfileFunc shutdown_callback
static const WCHAR version[]
Definition: asmname.c:64
MonoImage *CDECL * mono_image_open_from_module_handle(HMODULE module_handle, char *fname, UINT has_entry_point, MonoImageOpenStatus *status)
HRESULT CorDebug_Create(ICLRRuntimeHost *runtimehost, IUnknown **ppUnk) DECLSPEC_HIDDEN
Definition: cordebug.c:742
struct _MonoMethod MonoMethod
char *CDECL * mono_stringify_assembly_name(MonoAssemblyName *aname)
int(CDECL *mono_jit_exec)(MonoDomain *domain
int options
Definition: main.c:106
MonoDomain *CDECL * mono_object_get_domain(MonoObject *obj)
HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name, MonoDomain *domain, MonoObject **result) DECLSPEC_HIDDEN
loaded_mono * mono
MonoAssembly *(* MonoAssemblyPreLoadFunc)(MonoAssemblyName *aname, char **assemblies_path, void *user_data)
WINE_DEFAULT_DEBUG_CHANNEL(mscoree)
CRITICAL_SECTION lock
void runtimehost_init(void)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
void *CDECL * mono_object_unbox(MonoObject *obj)
struct list supported_runtimes
MonoAssembly * assembly
#define MAX_PATH
Definition: compat.h:26
#define WINAPI
Definition: msvc.h:8
struct parsed_config_file parsed_config_file
HRESULT get_runtime_info(LPCWSTR exefile, LPCWSTR version, LPCWSTR config_file, DWORD startup_flags, DWORD runtimeinfo_flags, BOOL legacy, ICLRRuntimeInfo **result) DECLSPEC_HIDDEN
Definition: metahost.c:1247
unsigned short WORD
Definition: ntddk_ex.h:93
static FILE * out
Definition: regtests2xml.c:44
unsigned long DWORD
Definition: ntddk_ex.h:95
struct list domains
struct _MonoClass MonoClass
method
Definition: dragdrop.c:53
struct _MonoImage MonoImage
MonoAssembly *CDECL * mono_assembly_load_from(MonoImage *image, const char *fname, MonoImageOpenStatus *status)
void unload_all_runtimes(void) DECLSPEC_HIDDEN
Definition: metahost.c:266
REFCLSID clsid
Definition: msctf.c:84
ICLRRuntimeHost ICLRRuntimeHost_iface
struct _MonoObject MonoObject
HRESULT CLRMetaHost_CreateInstance(REFIID riid, void **ppobj) DECLSPEC_HIDDEN
Definition: metahost.c:1155
HRESULT RuntimeHost_GetInterface(RuntimeHost *This, REFCLSID clsid, REFIID riid, void **ppv) DECLSPEC_HIDDEN
Definition: _list.h:228
MonoClass *CDECL * mono_class_from_name(MonoImage *image, const char *name_space, const char *name)
struct list processes
struct list entry
MonoObject *CDECL * mono_runtime_invoke(MonoMethod *method, void *obj, void **params, MonoObject **exc)
ICorRuntimeHost ICorRuntimeHost_iface
void(CDECL *mono_config_parse)(const char *filename)
struct CorDebug CorDebug
ICorDebugProcessEnum ICorDebugProcessEnum_iface
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
const CLRRuntimeInfo * version
void *CDECL * mono_marshal_get_vtfixup_ftnptr(MonoImage *image, DWORD token, WORD type)
#define CDECL
Definition: compat.h:21
struct _MonoProfiler MonoProfiler
HRESULT WINAPI CLRMetaHost_GetVersionFromFile(ICLRMetaHost *iface, LPCWSTR pwzFilePath, LPWSTR pwzBuffer, DWORD *pcchBuffer) DECLSPEC_HIDDEN
Definition: metahost.c:1049
HMODULE glib_handle
unsigned int UINT
Definition: ndis.h:50
MonoObject *CDECL * mono_object_new(MonoDomain *domain, MonoClass *klass)
MonoAssembly int argc
Definition: name.c:36
MonoString *CDECL * mono_string_new(MonoDomain *domain, const char *str)
HRESULT WINAPI CLRMetaHost_GetRuntime(ICLRMetaHost *iface, LPCWSTR pwzVersion, REFIID iid, LPVOID *ppRuntime) DECLSPEC_HIDDEN
Definition: metahost.c:1010
MonoImageOpenStatus
struct RuntimeHost * loaded_runtime
HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file) DECLSPEC_HIDDEN
Definition: assembly.c:640
struct _MonoType MonoType
struct supported_runtime supported_runtime
struct _MonoThread MonoThread
MonoDomain *CDECL * mono_jit_init(const char *file)
void expect_no_runtimes(void) DECLSPEC_HIDDEN
Definition: metahost.c:289
struct _MonoDomain MonoDomain
struct _MonoAssembly MonoAssembly
WCHAR * LPWSTR
Definition: xmlstorage.h:184
struct CLRRuntimeInfo CLRRuntimeInfo
HRESULT RuntimeHost_GetIUnknownForObject(RuntimeHost *This, MonoObject *obj, IUnknown **ppUnk) DECLSPEC_HIDDEN
GLuint64EXT * result
Definition: glext.h:11304
BOOL legacy
Definition: mkisofs.c:131
ICLRRuntimeInfo ICLRRuntimeInfo_iface
ICorDebugManagedCallback2 * pCallback2
struct _MonoString MonoString
Definition: fci.c:126
Definition: ps.c:97