static int _getdomain(DWORD *pDomain) { *pDomain=0; ICLRRuntimeHost *pClrHost = NULL; HRESULT hr = CorBindToRuntimeEx( NULL, // version of the runtime to request NULL, // flavor of the runtime to request 0, // runtime startup flags CLSID_CLRRuntimeHost, // clsid of ICLRRuntimeHost IID_ICLRRuntimeHost, // IID of ICLRRuntimeHost (PVOID*)&pClrHost); // a pointer to our punk that we get back if (FAILED(hr)) { if (pClrHost != NULL) { pClrHost->Release(); } return false; } DWORD domain=0; hr=pClrHost->GetCurrentAppDomainId(&domain); pClrHost->Release(); pClrHost=NULL; if (FAILED(hr)) { return false; } *pDomain=domain; return true; }
static int _getdomain(DWORD *pDomain) { using System::Runtime::InteropServices::RuntimeEnvironment; *pDomain=0; // Throws HR exception on failure. ICLRRuntimeHost *pClrHost = NULL; pClrHost = reinterpret_cast<ICLRRuntimeHost*>( RuntimeEnvironment::GetRuntimeInterfaceAsIntPtr( msclr::_detail::FromGUID(CLSID_CLRRuntimeHost), msclr::_detail::FromGUID(IID_ICLRRuntimeHost)).ToPointer()); DWORD domain=0; HRESULT hr = pClrHost->GetCurrentAppDomainId(&domain); pClrHost->Release(); pClrHost=NULL; if (FAILED(hr)) { return false; } *pDomain=domain; return true; }