社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

CLRのホスト


今日、約束をしてしまったので。。。
CLRをホストするコードです。

---
#include 
#pragma comment(lib, "mscoree.lib")

#include 
#include 
#include 
#pragma comment(lib, "comsupp.lib")

#pragma warning(push)
#pragma warning(disable: 4192)
#pragma warning(disable: 4278)
#import 
#pragma warning(pop)

HRESULT HostClr()
{
 USES_CONVERSION;

 HRESULT hr = S_OK;

 ICorRuntimeHostPtr spCorRuntimeHost;
 hr = ::CorBindToRuntimeEx(
  L"v1.1.4322",
  L"wks",
  STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST | STARTUP_CONCURRENT_GC,
  CLSID_CorRuntimeHost,
  __uuidof(ICorRuntimeHost),
  (void**)&spCorRuntimeHost);
 if (FAILED(hr))
 {
  return E_FAIL;
 }

 // 開始
 hr = spCorRuntimeHost->Start();
 if (FAILED(hr))
 {
  return hr;
 }

 // アプリケーションドメインの取得
 IUnknownPtr spUnkAppDomain;
 hr = spCorRuntimeHost->GetDefaultDomain(&spUnkAppDomain);
 if (FAILED(hr))
 {
  return hr;
 }

 mscorlib::_AppDomainPtr spAppDomain = spUnkAppDomain;
 if (spAppDomain == NULL)
 {
  return E_FAIL;
 }

 // オブジェクトの作成
 TCHAR szAssemblyName[] = _T("Mscorlib");
 TCHAR szTypeName[] = _T("System.Int32");
 mscorlib::_ObjectHandlePtr spInt32Handle = spAppDomain->CreateInstance(szAssemblyName, szTypeName);
 if (spInt32Handle == NULL)
 {
  // 無視する。。
 }

 // 終了
 hr = spCorRuntimeHost->Stop();
 if (FAILED(hr))
 {
  return hr;
 }

 return S_OK;
}
---

投稿日時 : 2004年12月19日 1:29


コメントを追加

タイトル
名前
URL
コメント