love! LOVEHINA - love2hina.net
メニュー



アーカイブ
2006/07/19 マネージとアンマネージの混在 .NET2編 その2

作成者: カテゴリー: 未分類

昨日の続き。
…続いちゃうの!?とか言わないでくださいw

/clrコンパイルオプションを外してコンパイルするのはDLLのエントリポイントですから、
COMコンポーネントDLLの場合だと以下の関数が該当すると思います。
・DllMain
・DllCanUnloadNow
・DllGetClassObject
・DllRegisterServer
・DllUnregisterServer
これらを1つのCPPファイルに書いてしまえば言い訳ですね。

書き書き…
のーみそコネコネ、コンパイルしてみよーw
というか、ぷよまん食べたくなったよ…もう、売ってないけど…

 Σ(´Д`lll)エラーデタw

COMのインターフェース内にマネージオブジェクトを埋め込んでいるのですが、
オブジェクトマップの関係上、そのインターフェイス定義をインクルードしなくてはなりません。

BEGIN_OBJECT_MAP(WMPSyncPlgComMap)
	OBJECT_ENTRY(CLSID_WMPSyncPlg, clsWMPSyncPlgInterface)
END_OBJECT_MAP()
extern "C" bool __stdcall DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
	switch (dwReason)
	{
	case DLL_PROCESS_ATTACH:
        ComModule.Init(WMPSyncPlgComMap, hInstance);
		break;
	case DLL_PROCESS_DETACH:
        ComModule.Term();
		break;
	}
	return true;
}

こんな感じでDllMainで初期化のために参照されるため、clsWMPSyncPlgInterfaceクラス定義内に、

class ATL_NO_VTABLE clsWMPSyncPlgInterface: 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<clsWMPSyncPlgInterface, &CLSID_WMPSyncPlg>,
    public IWMPPluginUI
{
//
// 途中かなり省略
//
private:
	CComPtr<IWMPCore>	m_ptrWMPCore;
	gcroot<iriverWMPSyncPlugin::frmMain ^>	m_objfrmMain; // ここでハンドルオブジェクトを定義できない
};

上記のように、マネージオブジェクトを配置することが出来ないようです…
仕方ありませんので、汎用的な(void *)などで置き換えておいてみました。
そして、実際のコーディング部分でこのポインタ部分にgcroot<>テンプレートを割り当ててみます。

clsWMPSyncPlgInterface::clsWMPSyncPlgInterface(void)
{
	System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::MTA;
	m_ptrWMPCore = NULL;
	m_ptrfrmMainGCRoot = new gcroot<iriverWMPSyncPlugin::frmMain^>;
	*(gcroot<iriverWMPSyncPlugin::frmMain^> *)m_ptrfrmMainGCRoot = nullptr;
}

お、コンパイルも通り、実行が出来ました。
ヘッダ部分は、マネージ・アンマネージ両方から参照できるように作っておくと良いようです。

さてと、なんだか本当にこれで良いのか!?
…と思ったら、System.Runtime.InteropServicesが結構怪しいですね。
なんか、属性を付けるだけでCOMアプリケーションからアクセスできそうな予感w

今までのは何だったんだ!?

…これが試行錯誤くおりてぃ(まて

2006/07/18 マジな記事w マネージとアンマネージの混在 .NET2編 その1

作成者: カテゴリー: 未分類

なぜだか真剣な記事もたまには良いですよね。

WMP Sync Pluginをバージョンアップして、コードを書き直しているのですが、
Windows Media Playerはアンマネージのアプリケーションです。
そこから呼び出されるプラグイン内でマネージコードを使用しているのですが、
.NET Framework 1.1から.NET Framework 2.0に移行するにあたり、
この混在アセンブリの初期化部分等が改善されているみたいです。

従来では、_vcclrit.hをインクルードして、
__crt_dll_initialize()
などを使用して手動でマネージ部分の初期化を行っていました。

外部から呼ばれる関数全てにこの初期化、
解放関数をばらまかなくてはならないようで、COMのDLLだと、
・DllCanUnloadNow
・DllGetClassObject
・DllRegisterServer
・DllUnregisterServer
の上記の関数を変更する必要があり、はっきり言って面倒でした…
(まだ4関数だから良いっていえばまだいいですけど)

.NET Framework 2.0ではこれらの関数は不要になり、
DLLがロードされたときに自動的に初期化等を行うようになっているようです。

外部から呼び出されるアンマネージ関数は別ファイルにしておいて、
/clrオプションをファイル単位で外してコンパイルするようです。

うわ、書いてて眠くなった。。。次は明日にしよう…
おやすみー。

ちなみに管理人の独自調査(試行錯誤とも言う)の結果ですので内容は保証しません!

2006/07/17 Canvas2 DVD

作成者: カテゴリー: 未分類

とはいっても、今秋にでるCanvas2 DVD Editionのことではなく、
Canvas2 TVアニメのDVDのこと。

いやぁ、買ったはよいものの、積んであったので、
この3連休で1巻から5巻まで制覇♪

連休とは良い物ですね(ぇ

2006/07/16 MK8007GAH

作成者: カテゴリー: 未分類

MK8007GAHがT・ZONEで予約受付をしていました。

とうとう、一般市場へ出回ってきたようです!
H340が80GBになる日が来ました!(w

販売価格は\26800程度だったかと思います。
かなり惹かれている私がここにいます(w

2006/07/15 メモリ買った

作成者: カテゴリー: 未分類

メモリを新しく買ってきました。
SanMaxのDDR400 1GB x 2枚です。
チップはInfineon CE-5。

なんとなくオーバークロックはスマートじゃないので、
(すっごく個人的なただの偏見ですね)
電圧、クロックは定格のままで低レイテンシ化に挑戦してみました。

詰めて行ったところ、こんな感じになりました。

Clock : 200MHz(定格)
CL   : 2
tRCD : 3
tRP  : 3
tRAS : 6
tRRD : 2
tRC  : 7
tRFC : 12
tRWT : 2

以下の設定でもMemtest86は完走するのですが…

Clock : 200MHz(定格)
CL   : 2
tRCD : 3
tRP  : 2
tRAS : 5
tRRD : 2
tRC  : 7
tRFC : 12
tRWT : 2

再起動するたびにCMOS設定が初期化されるという…
メモリテストで引っかかってるのかなぁw

とまぁ、2GBになってVistaは快適になりました。
いやっほい♪

2006/07/12 涼宮ハルヒ。

作成者: カテゴリー: 未分類

Amazon.co.jpのランキングとかすごいことになってますね。
DVDセールスランキングががががw
でも、TSUTAYAとかだと全然出てこないですね(笑

さすが、Amazon.co.jp。おた多しw

あぁ、愛しの給料日まであと少し。
今週は秋葉に行ってメモリを買ってくるとしますか…

2006/07/10 無駄な考え休むに似たり(違w

作成者: カテゴリー: 未分類

さて、では昨日のgigabeatをどうやればお金を捻出できるか、考えてみることにします。

まず、今月の予約済みで買わなくてはお店に迷惑をかけてしまうものw

フルアニ
Canvas2 DVD 永遠の恋心 6巻

両方あわせて、2万弱ぐらいですか…

つぎー、PCのメモリが片方お亡くなりになったので、買い換えないとまずーなので、
(Windows Vistaがスワップしまくりで激重です。このOS、1GBはメモリ必須ですね。)

・DDR400(PC3200) 1GB CL3 x 2

こちらも2万弱ぐらいですが、生きている片方のメモリを売って足しにしましょう。
錬金術は大切ですよw

えと、次に今月に狙っているタイトルw

メイドさんと大きな剣
おしえて Re:メイド
はぴねす!りらっくす 初回限定版
ぶらばん!

えっと、正直なところ無理だろ…っていう塩梅になってきました…

あと、愛しのオーディオテクニカからATH-CM7の後継機が出ました。

ATH-CM700(TI or SV)

…絶望的ですね。
ということでこんなことに30分を費やす、ダメな管理人でありましたとさ。

2006/07/09 gigabeatに浮気しそうですw

作成者: カテゴリー: 未分類

gigabeat V30T

…かなり欲しいかも…
PMC最高w

U10だとWMPで転送してもタグ表示にiriver Plus 2でデータベース構築しなきゃいけないみたいだし面倒だし。

…ワンセグも見られるし、QVGAサイズのWMVが再生できて、
PCから転送時に自動的に再エンコードされるし。

でも、どうやって5万円を絞り出すかが大問題w

2006/07/08 貫徹残業終了…

作成者: カテゴリー: 未分類

な、なんとか仕事の方がマスターアップしました…

木曜朝の10時から、翌日の朝5時までもう泊まり込みです。
そして9時に起きて作業再開…
もうぐったり。乳酸が溜まって腕が上がらないよぉぉー。

もう、ただただ来月の給料明細だけが救いです…

> mixiユーザーの方

さて、mixiミュージックの方ご覧になりましたか?
あにそん(というよりはげーむ主題歌か)ばっかりかと思いきや、
実はランキング上位を占めるのはFeeder。という謎な管理人です。

メロディックロックサイコーw

2006/07/02 メモリがお亡くなりに…

作成者: カテゴリー: 未分類

OSがブルースクリーンで突然落ちて…

片方のメモリがお亡くなりになりました。
ああ…そんなぁ…

というわけで、512MBで稼働中。
2枚とも同時ではなかった分まだ助かりましたが…

新たに新調してきた方が良さそうですね。
2枚ともほぼ同時に買いましたし。
2年間と3ヶ月…お疲れ様でした、Sumsung。