2006 年 11 月 11 日 23 時 55 分

インプロセスサーバ = DLL + DllGetClassObject


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


COM サーバの開発には、Visual Studio を使う事が多い。

Visual Studio で COM と言うと、
MFC や ATL などの高度なライブラリを使い、
ウィザードを併用して開発するイメージがある。

確かにこれら高度なライブラリを使えば、
素早く開発を行うことができるんだが、
COM の基幹部分がライブラリに隠蔽されているため、
どういう風に動作しているかがいまいち見えにくい。

今回は業務ではないので、高度なライブラリを使わず、
単純な Windows DLL として作ることにしよう。

COM サーバと言えば、特殊なものという印象があるが、
インプロセスサーバの実体は、通常の Windows DLL に、
COM の規格で定められた以下の関数を実装したものである。

・DllGetClassObject
・DllCanUnloadNow
・DllRegisterServer(任意)
・DllUnregisterServer(任意)

DLL に上記関数が正しく実装されておれば、
それはインプロセスサーバとして利用できる DLL となる。
特に DllGetClassObject が核となる重要な関数であり、
インプロセスサーバ = DllGetClassObject と言っても良い。

これら関数の役割やその実装については、
今後やっていくことになるので、ここでは解説しないが、
現時点では、インプロセスサーバが単なる DLL である
ということを覚えておけば十分である。

では、Windows DLL のプロジェクトを作成しよう。
開発環境は、Windows DLL を作成できれば何でもいいが、
今回は Visual Studio .NET 2003 を使うことにする。

新規作成 => プロジェクトより、
Visual C++ プロジェクト => Win32 プロジェクトを選ぶ。
プロジェクト名は「LinkIconOverlays」としておく。

アプリケーションの設定で、「DLL」を選ぶ。
自動では何も追加されない方がいいため、
「空のプロジェクト」にチェックを入れて作成する。

これは、Visual Studio 固有の方法であるが、
要は DLL をビルドできる環境を作ればよいのだ。

今日はここまでにしておこう。
明日からは、アイコンを提供するクラスについて考えていく。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.