65 0, 0, { (
DWORD_PTR)(__FILE__
": runtime_list_cs") }
123static void (
CDECL *mono_set_crash_chaining)(
BOOL chain_signals);
165 static const WCHAR lib[] = {
'\\',
'l',
'i',
'b',0};
166 static const WCHAR etc[] = {
'\\',
'e',
't',
'c',0};
171 char aot_setting[256];
173 char trace_setting[256];
175 char verbose_setting[256];
179 ERR(
"Cannot load Mono after it has been shut down.\n");
199#define LOAD_MONO_FUNCTION(x) do { \
200 x = (void*)GetProcAddress(mono_handle, #x); \
243#undef LOAD_MONO_FUNCTION
245#define LOAD_OPT_MONO_FUNCTION(x, default) do { \
246 x = (void*)GetProcAddress(mono_handle, #x); \
266#undef LOAD_OPT_MONO_FUNCTION
268 if (mono_callspec_set_assembly ==
NULL)
271 if (!mono_callspec_set_assembly)
goto fail;
274 if (mono_profiler_create !=
NULL)
280 else if (mono_profiler_install !=
NULL)
286 mono_set_crash_chaining(
TRUE);
292 mono_set_dirs(mono_lib_path_a, mono_etc_path_a);
294 mono_config_parse(
NULL);
296 if (wine_mono_install_assembly_preload_hook_v2)
298 else if (wine_mono_install_assembly_preload_hook)
308 if (
strcmp(aot_setting,
"interp") == 0)
310 else if (
strcmp(aot_setting,
"none") == 0)
314 ERR(
"unknown WINE_MONO_AOT setting, valid settings are interp and none\n");
317 if (mono_jit_set_aot_mode !=
NULL)
319 mono_jit_set_aot_mode(
mode);
323 ERR(
"mono_jit_set_aot_mode export not found\n");
331 mono_jit_set_trace_options(trace_setting);
338 mono_set_verbose_level(verbose_setting[0] -
'0');
345 ERR(
"Could not load Mono into this process\n");
363 return WtoA(basenameW);
370 if (root_domain !=
NULL)
375 if (root_domain ==
NULL)
415 if (
This->loaded_runtime)
423 ERR(
"Wine Mono is not installed\n");
429 if (
This->loaded_runtime)
458 ERR(
"Process exited with a Mono runtime loaded.\n");
485 ICLRRuntimeInfo_AddRef( iface );
509 TRACE(
"%p %p %p\n", iface, pwzBuffer, pcchBuffer);
530 static const WCHAR dotnet_key[] = {
'S',
'O',
'F',
'T',
'W',
'A',
'R',
'E',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'.',
'N',
'E',
'T',
'F',
'r',
'a',
'm',
'e',
'w',
'o',
'r',
'k',
'\\',0};
531 static const WCHAR install_root[] = {
'I',
'n',
's',
't',
'a',
'l',
'l',
'R',
'o',
'o',
't',0};
553 static const WCHAR slash[] = {
'\\',0};
560 TRACE(
"%p %p %p\n", iface, pwzBuffer, pcchBuffer);
564 ERR(
"error reading registry key for installroot\n");
570 ICLRRuntimeInfo_GetVersionString(iface,
version, &version_size);
592 FIXME(
"%p %p %p\n", iface, hndProcess, pbLoaded);
600 FIXME(
"%p %u %p %p %lx\n", iface, iResourceID, pwzBuffer, pcchBuffer, iLocaleid);
649 FIXME(
"%p %p\n", iface, pbLoadable);
657 FIXME(
"%p %lx %s\n", iface, dwStartupFlags,
debugstr_w(pwzHostConfigFile));
663 DWORD *pdwStartupFlags,
LPWSTR pwzHostConfigFile,
DWORD *pcchHostConfigFile)
665 FIXME(
"%p %p %p %p\n", iface, pdwStartupFlags, pwzHostConfigFile, pcchHostConfigFile);
672 FIXME(
"%p\n", iface);
680 FIXME(
"%p %p %p\n", iface, pbStarted, pdwStartupFlags);
713static const WCHAR libmono2_arch_dll[] = {
'\\',
'b',
'i',
'n',
'\\',
'l',
'i',
'b',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0',
'-',
'x',
'8',
'6',
'.',
'd',
'l',
'l',0};
714#elif defined(__x86_64__)
715static const WCHAR libmono2_arch_dll[] = {
'\\',
'b',
'i',
'n',
'\\',
'l',
'i',
'b',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0',
'-',
'x',
'8',
'6',
'_',
'6',
'4',
'.',
'd',
'l',
'l',0};
717static const WCHAR libmono2_arch_dll[] = {
'\\',
'b',
'i',
'n',
'\\',
'l',
'i',
'b',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0',
'.',
'd',
'l',
'l',0};
722 static const WCHAR mono2_dll[] = {
'\\',
'b',
'i',
'n',
'\\',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0',
'.',
'd',
'l',
'l',0};
723 static const WCHAR libmono2_dll[] = {
'\\',
'b',
'i',
'n',
'\\',
'l',
'i',
'b',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0',
'.',
'd',
'l',
'l',0};
749 static const WCHAR subdir_mono[] = {
'\\',
'm',
'o',
'n',
'o',
'\\',
'm',
'o',
'n',
'o',
'-',
'2',
'.',
'0', 0};
767 static const WCHAR keyname[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'W',
'i',
'n',
'e',
'\\',
'M',
'o',
'n',
'o',0};
768 static const WCHAR valuename[] = {
'R',
'u',
'n',
't',
'i',
'm',
'e',
'P',
'a',
't',
'h',0};
779 valuesize =
sizeof(base_path);
794 static const WCHAR unix_prefix[] = {
'\\',
'\\',
'?',
'\\',
'u',
'n',
'i',
'x',
'\\'};
801 if (
memcmp(
dir, unix_prefix,
sizeof(unix_prefix)) == 0)
821 static WCHAR * (
CDECL *p_wine_get_dos_file_name)(
const char*);
825 if (!p_wine_get_dos_file_name)
828 if (!p_wine_get_dos_file_name)
832 dos_dir = p_wine_get_dos_file_name(unix_dir);
845 static const WCHAR winedatadirW[] = {
'W',
'I',
'N',
'E',
'D',
'A',
'T',
'A',
'D',
'I',
'R',0};
846 static const WCHAR winebuilddirW[] = {
'W',
'I',
'N',
'E',
'B',
'U',
'I',
'L',
'D',
'D',
'I',
'R',0};
847 static const WCHAR unix_prefix[] = {
'\\',
'?',
'?',
'\\',
'u',
'n',
'i',
'x',
'\\'};
848 static const WCHAR monoW[] = {
'\\',
'm',
'o',
'n',
'o',0};
849 static const WCHAR dotdotmonoW[] = {
'\\',
'.',
'.',
'\\',
'm',
'o',
'n',
'o',0};
850 const WCHAR *data_dir, *suffix;
854 if ((data_dir =
_wgetenv( winedatadirW )))
856 else if ((data_dir =
_wgetenv( winebuilddirW )))
857 suffix = dotdotmonoW;
885 (
strcmp(INSTALL_DATADIR,
"/usr/share") &&
921 IEnumUnknown_AddRef( iface );
931 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
941 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
955 ULONG num_fetched = 0;
959 TRACE(
"(%p,%lu,%p,%p)\n", iface, celt, rgelt, pceltFetched);
961 while (num_fetched < celt)
969 IUnknown_AddRef(
item);
970 rgelt[num_fetched] =
item;
976 *pceltFetched = num_fetched;
984 ULONG num_fetched = 0;
987 TRACE(
"(%p,%lu)\n", iface, celt);
989 while (num_fetched < celt)
1007 TRACE(
"(%p)\n", iface);
1019 TRACE(
"(%p)\n", iface);
1021 new_enum =
malloc(
sizeof(*new_enum));
1061 ICLRMetaHost_AddRef( iface );
1078 return c >=
'0' &&
c <=
'9';
1140 return ICLRRuntimeInfo_QueryInterface(&
runtimes[
i].ICLRRuntimeInfo_iface, iid,
1197 TRACE(
"%p\n", ppEnumerator);
1199 new_enum =
malloc(
sizeof(*new_enum));
1215 FIXME(
"%p %p\n", hndProcess, ppEnumerator);
1223 TRACE(
"%p\n", pCallbackFunction);
1225 if(!pCallbackFunction)
1246 TRACE(
"%i\n", iExitCode);
1300 ICLRMetaHostPolicy_AddRef( iface );
1332 TRACE(
"%d %p %p %p %p %p %p %p %s %p\n", dwPolicyFlags, pwzBinary, pCfgStream,
1333 pwzVersion, pcchVersion, pwzImageVersion, pcchImageVersion, pdwConfigFlags,
1336 if (pdwConfigFlags) {
1337 FIXME(
"ignoring config flags\n");
1338 *pdwConfigFlags = 0;
1357 if (pwzImageVersion)
1360 ICLRRuntimeInfo_GetVersionString(
result, pwzImageVersion, pcchImageVersion);
1363 hr = ICLRRuntimeInfo_QueryInterface(
result,
riid, ppRuntime);
1365 ICLRRuntimeInfo_Release(
result);
1411#define ASSEMBLY_SEARCH_GAC 1
1412#define ASSEMBLY_SEARCH_UNDEFINED 2
1413#define ASSEMBLY_SEARCH_PRIVATEPATH 4
1414#define ASSEMBLY_SEARCH_MONOGAC 8
1415#define ASSEMBLY_SEARCH_DEFAULT (ASSEMBLY_SEARCH_GAC|ASSEMBLY_SEARCH_PRIVATEPATH|ASSEMBLY_SEARCH_MONOGAC)
1425#define IS_OPTION_TRUE(ch) \
1426 ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
1427#define IS_OPTION_FALSE(ch) \
1428 ((ch) == 'n' || (ch) == 'N' || (ch) == 'f' || (ch) == 'F' || (ch) == '0')
1432 const char *next_key, *equals, *
value;
1433 UINT kvp_len, key_len;
1437 while (
string && string_len > 0)
1439 next_key =
memchr(
string,
',', string_len);
1443 kvp_len = next_key -
string;
1447 kvp_len = string_len;
1449 equals =
memchr(
string,
'=', kvp_len);
1453 key_len = equals -
string;
1461 entry->flags &= ~ASSEMBLY_SEARCH_GAC;
1469 entry->flags &= ~ASSEMBLY_SEARCH_MONOGAC;
1473 if (!
_strnicmp(
string,
"privatepath", 11)) {
1477 entry->flags &= ~ASSEMBLY_SEARCH_PRIVATEPATH;
1486 string_len -= kvp_len + 1;
1492 const char *override_string =
getenv(
"WINE_MONO_OVERRIDES");
1495 if (override_string)
1497 const char *entry_start;
1499 entry_start = override_string;
1501 while (entry_start && *entry_start)
1503 const char *next_entry, *basename_end;
1506 next_entry =
strchr(entry_start,
';');
1510 entry_len = next_entry - entry_start;
1514 entry_len =
strlen(entry_start);
1516 basename_end =
memchr(entry_start,
',', entry_len);
1520 entry_start = next_entry;
1527 ERR(
"out of memory\n");
1531 entry->name =
calloc(1, basename_end - entry_start + 1);
1534 ERR(
"out of memory\n");
1539 memcpy(
entry->name, entry_start, basename_end - entry_start);
1541 entry_len -= basename_end - entry_start + 1;
1542 entry_start = basename_end + 1;
1548 entry_start = next_entry;
1568 return entry->flags;
1577 memset(®_entry, 0,
sizeof(reg_entry));
1581 return reg_entry.
flags;
1589 memset(®_entry, 0,
sizeof(reg_entry));
1593 return reg_entry.
flags;
1597 mono_assembly_name_get_version(aname,
NULL,
NULL,
NULL) == 4)
1606 static const WCHAR subkeyW[] = {
'\\',
'M',
'o',
'n',
'o',
'\\',
'A',
's',
'm',
'O',
'v',
'e',
'r',
'r',
'i',
'd',
'e',
's',0};
1615 WCHAR *
p, *appname = bufferW;
1616 if ((
p =
wcsrchr( appname,
'/' ))) appname =
p + 1;
1617 if ((
p =
wcsrchr( appname,
'\\' ))) appname =
p + 1;
1622 if (
RegOpenKeyW( tmpkey, appname, &appkey )) appkey = 0;
1633 char *name_copy, *name_end;
1635 HKEY appkey = 0, userkey;
1653 ERR(
"out of memory\n");
1669 name_end =
strrchr(name_copy,
'.');
1670 }
while (name_end !=
NULL);
1692 static const WCHAR fusiondll[] = {
'f',
'u',
's',
'i',
'o',
'n',0};
1696 if (!pCreateAssemblyCache)
1702 pCreateAssemblyCache = (
void*)
GetProcAddress(hfusion,
"CreateAssemblyCache");
1703 if (!pCreateAssemblyCache)
1709 hr = pCreateAssemblyCache(&asmcache, 0);
1713 info.cbAssemblyInfo =
sizeof(
info);
1714 info.pszCurrentAssemblyPathBuf = assemblies_path;
1716 assemblies_path[0] = 0;
1718 hr = IAssemblyCache_QueryAssemblyInfo(asmcache, 0, stringnameW, &
info);
1720 IAssemblyCache_Release(asmcache);
1760 char *stringname=
NULL;
1761 const char *assemblyname;
1763 LPWSTR stringnameW, cultureW;
1764 int stringnameW_size, cultureW_size;
1770 static const WCHAR dotdllW[] = {
'.',
'd',
'l',
'l',0};
1771 static const WCHAR dotexeW[] = {
'.',
'e',
'x',
'e',0};
1782 else cultureW =
NULL;
1786 if (!stringname || !assemblyname)
return NULL;
1792 stringnameW =
malloc(stringnameW_size *
sizeof(
WCHAR));
1833 stringnameW =
malloc(stringnameW_size *
sizeof(
WCHAR));
1869 TRACE(
"skipping Windows GAC search due to override setting\n");
1879 TRACE(
"found in Mono GAC\n");
1887 TRACE(
"skipping Mono GAC search due to override setting\n");
1893 TRACE(
"skipping AppDomain search path due to override setting\n");
1899 mono_free(stringname);
1908 static const WCHAR dotconfig[] = {
'.',
'c',
'o',
'n',
'f',
'i',
'g',0};
1909 static const DWORD supported_startup_flags = 0;
1918 if (startup_flags & ~supported_startup_flags)
1919 FIXME(
"unsupported startup flags %lx\n", startup_flags & ~supported_startup_flags);
1921 if (runtimeinfo_flags & ~supported_runtime_flags)
1922 FIXME(
"unsupported runtimeinfo flags %lx\n", runtimeinfo_flags & ~supported_runtime_flags);
1924 if (exefile && !exefile[0])
1927 if (exefile && !config_file && !config_stream)
1929 lstrcpyW(local_config_file, exefile);
1930 lstrcatW(local_config_file, dotconfig);
1932 config_file = local_config_file;
1935 if (config_file || config_stream)
1958 WARN(
"failed to parse config file %s, hr=%lx\n",
debugstr_w(config_file),
hr);
1994 return ICLRRuntimeInfo_QueryInterface(&
runtimes[
i].ICLRRuntimeInfo_iface,
1995 &IID_ICLRRuntimeInfo, (
void **)
result);
2029 return ICLRRuntimeInfo_QueryInterface(&
runtimes[
i].ICLRRuntimeInfo_iface,
2030 &IID_ICLRRuntimeInfo, (
void **)
result);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
#define RegCloseKey(hKey)
#define CLR_E_SHIM_RUNTIME
#define HOST_E_INVALIDOPERATION
void RuntimeHost_ExitProcess(RuntimeHost *This, INT exitcode)
HRESULT RuntimeHost_GetInterface(RuntimeHost *This, REFCLSID clsid, REFIID riid, void **ppv)
HRESULT RuntimeHost_Construct(CLRRuntimeInfo *runtime_version, RuntimeHost **result)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define GetProcAddress(x, y)
#define _strnicmp(_String1, _String2, _MaxCount)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define GetEnvironmentVariableA(x, y, z)
#define MultiByteToWideChar
static const WCHAR version[]
static const WCHAR culture[]
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
VOID WINAPI ExitProcess(IN UINT uExitCode)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
static void basename(LPCWSTR path, LPWSTR name)
HRESULT parse_config_stream(IStream *stream, parsed_config_file *result)
HRESULT parse_config_file(LPCWSTR filename, parsed_config_file *result)
void free_parsed_config_file(parsed_config_file *file)
wchar_t *CDECL _wgetenv(const wchar_t *name)
char *CDECL getenv(const char *name)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP char *__cdecl strrchr(const char *, int)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
HRESULT assembly_release(ASSEMBLY *assembly)
HRESULT assembly_get_runtime_version(ASSEMBLY *assembly, LPSTR *version)
HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file)
GLuint GLuint GLsizei GLenum type
GLenum const GLfloat * params
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
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
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static const WCHAR filenameW[]
static IPrintDialogCallback callback
@ RUNTIME_INFO_UPGRADE_VERSION
void CDECL mono_log_handler_fn(const char *log_domain, const char *log_level, const char *message, INT fatal, void *user_data)
char * WtoA(LPCWSTR wstr)
void CDECL mono_print_handler_fn(const char *string, INT is_stdout)
HRESULT WINAPI LoadLibraryShim(LPCWSTR szDllName, LPCWSTR szVersion, LPVOID pvReserved, HMODULE *phModDll)
void(* MonoLogCallback)(const char *log_domain, const char *log_level, const char *message, INT fatal, void *user_data)
struct _MonoObject MonoObject
struct _MonoThread MonoThread
MonoAssembly *(CDECL * WineMonoAssemblyPreLoadFunc)(MonoAssemblyName *aname, char **assemblies_path, int *flags, void *user_data)
void(CDECL * MonoProfileFunc)(MonoProfiler *prof)
#define WINE_PRELOAD_SET_GAC
#define WINE_PRELOAD_SKIP_PRIVATE_PATH
MonoAssembly *(CDECL * MonoAssemblyPreLoadFunc)(MonoAssemblyName *aname, char **assemblies_path, void *user_data)
struct _MonoProfiler MonoProfiler
#define WINE_MONO_VERSION
void(CDECL * MonoPrintCallback)(const char *string, INT is_stdout)
struct _MonoString MonoString
struct _MonoMethod MonoMethod
struct _MonoAssemblyName MonoAssemblyName
struct _MonoAssembly MonoAssembly
struct _MonoImage MonoImage
@ MONO_AOT_MODE_INTERP_ONLY
struct _MonoType MonoType
struct _MonoDomain MonoDomain
#define WINE_PRELOAD_SKIP_GAC
struct _MonoClass MonoClass
const GUID IID_IEnumUnknown
#define IsEqualGUID(rguid1, rguid2)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
wchar_t const *const size_t const buffer_size
IEnumUnknown IEnumUnknown_iface
LIST_ENTRY ProcessLocksList
struct list supported_runtimes
#define CONTAINING_RECORD(address, type, field)
#define INVALID_FILE_ATTRIBUTES
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define INIT_ONCE_STATIC_INIT
#define E_NOT_SUFFICIENT_BUFFER
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER