ReactOS 0.4.16-dev-2359-g4b75ec5
cor.idl File Reference

Go to the source code of this file.

Classes

interface  IMetaDataDispenser
 
interface  IMetaDataDispenserEx
 

Functions

 DEFINE_GUID (CLSID_CorMetaDataDispenser, 0xe5cb7a31, 0x7512, 0x11d2, 0x89, 0xce, 0x00, 0x80, 0xc7, 0x92, 0xe5, 0xd8)
 
 DEFINE_GUID (CLSID_CorMetaDataDispenserRuntime, 0x1ec2de53, 0x75cc, 0x11d2, 0x97, 0x75, 0x00, 0xa0, 0xc9, 0xb4, 0xd5, 0x0c)
 
BOOL WINAPI _CorDllMain (HINSTANCE, DWORD, LPVOID)
 
__int32 WINAPI _CorExeMain (void)
 
__int32 WINAPI _CorExeMain2 (PBYTE, DWORD, LPWSTR, LPWSTR, LPWSTR)
 
VOID WINAPI _CorImageUnloading (PVOID)
 
HRESULT WINAPI _CorValidateImage (PVOID *, LPCWSTR)
 
HRESULT WINAPI CoInitializeCor (DWORD)
 
void WINAPI CoUninitializeCor (void)
 

Function Documentation

◆ _CorDllMain()

BOOL WINAPI _CorDllMain ( HINSTANCE  hinstDLL,
DWORD  fdwReason,
LPVOID  lpvReserved 
)

Definition at line 1546 of file corruntimehost.c.

1547{
1549 HRESULT hr;
1550
1551 TRACE("(%p, %ld, %p)\n", hinstDLL, fdwReason, lpvReserved);
1552
1553 hr = assembly_from_hmodule(&assembly, hinstDLL);
1554 if (SUCCEEDED(hr))
1555 {
1556 NativeEntryPointFunc NativeEntryPoint=NULL;
1557
1558 assembly_get_native_entrypoint(assembly, &NativeEntryPoint);
1560 {
1561 if (!NativeEntryPoint)
1562 DisableThreadLibraryCalls(hinstDLL);
1564 }
1566 /* FIXME: clean up the vtables on DLL_PROCESS_DETACH */
1567 if (NativeEntryPoint)
1568 return NativeEntryPoint(hinstDLL, fdwReason, lpvReserved);
1569 }
1570 else
1571 ERR("failed to read CLR headers, hr=%lx\n", hr);
1572
1573 return TRUE;
1574}
static DWORD const fdwReason
#define ERR(fmt,...)
Definition: precomp.h:57
static void FixupVTable_Assembly(HMODULE hmodule, ASSEMBLY *assembly)
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
HRESULT assembly_release(ASSEMBLY *assembly)
Definition: assembly.c:694
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static IN DWORD IN LPVOID lpvReserved
HRESULT assembly_get_native_entrypoint(ASSEMBLY *assembly, NativeEntryPointFunc *func)
Definition: assembly.c:303
HRESULT assembly_from_hmodule(ASSEMBLY **out, HMODULE hmodule)
Definition: assembly.c:244
BOOL(WINAPI * NativeEntryPointFunc)(HINSTANCE, DWORD, LPVOID)
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4

◆ _CorExeMain()

__int32 WINAPI _CorExeMain ( void  )

Definition at line 1423 of file corruntimehost.c.

1424{
1425 static const WCHAR dotconfig[] = {'.','c','o','n','f','i','g',0};
1426 static const WCHAR scW[] = {';',0};
1427 int exit_code;
1428 int argc;
1429 char **argv;
1434 WCHAR filename[MAX_PATH], config_file[MAX_PATH], *temp, **priv_path;
1435 SIZE_T config_file_dir_size;
1436 char *filenameA;
1437 ICLRRuntimeInfo *info;
1439 parsed_config_file parsed_config;
1440 HRESULT hr;
1441 int i, number_of_private_paths = 0;
1442
1444
1446
1447 TRACE("%s argc=%i\n", debugstr_w(filename), argc);
1448
1450 if (!filenameA)
1451 {
1452 free(argv);
1453 return -1;
1454 }
1455
1457
1458 wcscpy(config_file, filename);
1459 wcscat(config_file, dotconfig);
1460
1461 hr = parse_config_file(config_file, &parsed_config);
1462 if (SUCCEEDED(hr) && parsed_config.private_path && parsed_config.private_path[0])
1463 {
1464#ifndef __REACTOS__
1465 WCHAR *save;
1466#endif
1467 for(i = 0; parsed_config.private_path[i] != 0; i++)
1468 if (parsed_config.private_path[i] == ';') number_of_private_paths++;
1469 if (parsed_config.private_path[wcslen(parsed_config.private_path) - 1] != ';') number_of_private_paths++;
1470 config_file_dir_size = (wcsrchr(config_file, '\\') - config_file) + 1;
1471 priv_path = malloc((number_of_private_paths + 1) * sizeof(WCHAR *));
1472 /* wcstok ignores trailing semicolons */
1473#ifdef __REACTOS__
1474 temp = wcstok(parsed_config.private_path, scW);
1475#else
1476 temp = wcstok_s(parsed_config.private_path, scW, &save);
1477#endif
1478 for (i = 0; i < number_of_private_paths; i++)
1479 {
1480 priv_path[i] = malloc((config_file_dir_size + wcslen(temp) + 1) * sizeof(WCHAR));
1481 memcpy(priv_path[i], config_file, config_file_dir_size * sizeof(WCHAR));
1482 wcscpy(priv_path[i] + config_file_dir_size, temp);
1483#ifdef __REACTOS__
1484 temp = wcstok(NULL, scW);
1485#else
1486 temp = wcstok_s(NULL, scW, &save);
1487#endif
1488 }
1489 priv_path[number_of_private_paths] = NULL;
1490 if (InterlockedCompareExchangePointer((void **)&private_path, priv_path, NULL))
1491 ERR("private_path was already set\n");
1492 }
1493
1494 free_parsed_config_file(&parsed_config);
1495
1497
1498 if (SUCCEEDED(hr))
1499 {
1501
1502 if (SUCCEEDED(hr))
1503 hr = RuntimeHost_GetDefaultDomain(host, config_file, &domain);
1504
1505 if (SUCCEEDED(hr))
1506 {
1508 filenameA, 1, &status);
1509
1510 if (image)
1512
1513 if (assembly)
1514 {
1515 mono_callspec_set_assembly(assembly);
1516
1517 exit_code = mono_jit_exec(domain, assembly, argc, argv);
1518 }
1519 else
1520 {
1521 ERR("couldn't load %s, status=%d\n", debugstr_w(filename), status);
1522 exit_code = -1;
1523 }
1524 }
1525 else
1526 exit_code = -1;
1527
1528 ICLRRuntimeInfo_Release(info);
1529 }
1530 else
1531 exit_code = -1;
1532
1533 free(argv);
1534
1535 if (domain)
1536 {
1537 mono_thread_manage();
1538 mono_runtime_quit();
1539 }
1540
1542
1543 return exit_code;
1544}
static void FixupVTable(HMODULE hmodule)
static HRESULT RuntimeHost_GetDefaultDomain(RuntimeHost *This, const WCHAR *config_path, MonoDomain **result)
static void get_utf8_args(int *argc, char ***argv)
WCHAR ** private_path
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define FALSE
Definition: types.h:117
#define wcsrchr
Definition: compat.h:16
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
VOID WINAPI ExitProcess(IN UINT uExitCode)
Definition: proc.c:1331
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
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_image_open_from_module_handle(HMODULE module_handle, char *fname, UINT has_entry_point, MonoImageOpenStatus *status)
MonoAssembly int argc
Definition: metahost.c:107
MonoAssembly *CDECL * mono_assembly_load_from(MonoImage *image, const char *fname, MonoImageOpenStatus *status)
HRESULT ICLRRuntimeInfo_GetRuntimeHost(ICLRRuntimeInfo *iface, RuntimeHost **result)
Definition: metahost.c:703
_ACRTIMP wchar_t *__cdecl wcstok_s(wchar_t *, const wchar_t *, wchar_t **)
Definition: wcs.c:2031
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983
_ACRTIMP wchar_t *__cdecl wcstok(wchar_t *, const wchar_t *)
Definition: wcs.c:2065
GLeglImageOES image
Definition: gl.h:2204
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 InterlockedCompareExchangePointer
Definition: interlocked.h:144
const char * filename
Definition: ioapi.h:137
#define debugstr_w
Definition: kernel32.h:32
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static UINT exit_code
Definition: process.c:80
static CHAR filenameA[MAX_PATH]
Definition: storage32.c:35
#define argv
Definition: mplay32.c:18
char * WtoA(LPCWSTR wstr)
Definition: mscoree_main.c:63
struct _MonoAssembly MonoAssembly
struct _MonoImage MonoImage
MonoImageOpenStatus
struct _MonoDomain MonoDomain
static calc_node_t temp
Definition: rpn_ieee.c:38
wcscat
wcscpy
Definition: cookie.c:42
Definition: txthost.c:37
Definition: ps.c:97
ULONG_PTR SIZE_T
Definition: typedefs.h:80
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ _CorExeMain2()

__int32 WINAPI _CorExeMain2 ( PBYTE  ptrMemory,
DWORD  cntMemory,
LPWSTR  imageName,
LPWSTR  loaderName,
LPWSTR  cmdLine 
)

Definition at line 312 of file mscoree_main.c.

313{
314 TRACE("(%p, %lu, %s, %s, %s)\n", ptrMemory, cntMemory, debugstr_w(imageName), debugstr_w(loaderName), debugstr_w(cmdLine));
315 FIXME("Directly running .NET applications not supported.\n");
316 return -1;
317}
#define FIXME(fmt,...)
Definition: precomp.h:53
UNICODE_STRING imageName
Definition: library.c:551

◆ _CorImageUnloading()

VOID WINAPI _CorImageUnloading ( PVOID  imageBase)

Definition at line 325 of file mscoree_main.c.

326{
327 TRACE("(%p): stub\n", imageBase);
328}

◆ _CorValidateImage()

HRESULT WINAPI _CorValidateImage ( PVOID imageBase,
LPCWSTR  imageName 
)

Definition at line 330 of file mscoree_main.c.

331{
332 TRACE("(%p, %s): stub\n", imageBase, debugstr_w(imageName));
333 return E_FAIL;
334}
#define E_FAIL
Definition: ddrawi.h:102

◆ CoInitializeCor()

HRESULT WINAPI CoInitializeCor ( DWORD  fFlags)

Definition at line 510 of file mscoree_main.c.

511{
512 FIXME("(0x%08lx): stub\n", fFlags);
513 return S_OK;
514}
#define S_OK
Definition: intsafe.h:52

◆ CoUninitializeCor()

void WINAPI CoUninitializeCor ( void  )

◆ DEFINE_GUID() [1/2]

DEFINE_GUID ( CLSID_CorMetaDataDispenser  ,
0xe5cb7a31  ,
0x7512  ,
0x11d2  ,
0x89  ,
0xce  ,
0x00  ,
0x80  ,
0xc7  ,
0x92  ,
0xe5  ,
0xd8   
)

◆ DEFINE_GUID() [2/2]

DEFINE_GUID ( CLSID_CorMetaDataDispenserRuntime  ,
0x1ec2de53  ,
0x75cc  ,
0x11d2  ,
0x97  ,
0x75  ,
0x00  ,
0xa0  ,
0xc9  ,
0xb4  ,
0xd5  ,
0x0c   
)