Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HRESULT NETLoader::LoadModule(const wchar_t* moduleName)
- {
- ICLRMetaHost* pMetaHost = nullptr;
- auto hResult = CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&pMetaHost));
- if(FAILED(hResult))
- return hResult;
- wchar_t clrVersion[MAX_PATH];
- DWORD dwLen = MAX_PATH;
- hResult = pMetaHost->GetVersionFromFile(moduleName, clrVersion, &dwLen);
- if(FAILED(hResult)) {
- pMetaHost->Release();
- return hResult;
- }
- ICLRRuntimeInfo* pRuntimeInfo = nullptr;
- hResult = pMetaHost->GetRuntime(clrVersion, IID_PPV_ARGS(&pRuntimeInfo));
- if(FAILED(hResult))
- {
- pMetaHost->Release();
- return hResult;
- }
- pMetaHost->Release();
- ICLRRuntimeHost* pRuntimeHost = nullptr;
- hResult = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_PPV_ARGS(&pRuntimeHost));
- if(FAILED(hResult))
- {
- pRuntimeInfo->Release();
- return hResult;
- }
- pRuntimeInfo->Release();
- hResult = pRuntimeHost->Start();
- if(FAILED(hResult))
- {
- pRuntimeHost->Release();
- return hResult;
- }
- DWORD dwResult = 0;
- hResult = pRuntimeHost->ExecuteInDefaultAppDomain(moduleName, L"TrackObject.Entry", L"Main", L"NETLoader_Call", &dwResult);
- if(FAILED(hResult))
- {
- pRuntimeHost->Release();
- return hResult;
- }
- pRuntimeHost->Release();
- return S_OK;
- }
Advertisement
Add Comment
Please, Sign In to add comment