CAtlExeModuleT クラス

このクラスは、アプリケーションのモジュールを表します。

構文

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>

パラメーター

T
CAtlExeModuleT から派生したクラス。

メンバー

パブリック コンストラクター

名前 説明
CAtlExeModuleT::CAtlExeModuleT コンストラクター。
CAtlExeModuleT::~CAtlExeModuleT デストラクター。

パブリック メソッド

名前 説明
CAtlExeModuleT::InitializeCom COM を初期化します。
CAtlExeModuleT::ParseCommandLine コマンド ラインを解析し、必要に応じて登録を実行します。
CAtlExeModuleT::PostMessageLoop このメソッドは、メッセージ ループが終了した直後に呼び出されます。
CAtlExeModuleT::PreMessageLoop このメソッドは、メッセージ ループを入力する直前に呼び出されます。
CAtlExeModuleT::RegisterClassObjects クラス オブジェクトを登録します。
CAtlExeModuleT::RevokeClassObjects クラス オブジェクトを取り消します。
CAtlExeModuleT::Run このメソッドでは、EXE モジュール内のコードを実行して初期化し、メッセージ ループを実行して、クリーンアップを行います。
CAtlExeModuleT::RunMessageLoop このメソッドでは、メッセージ ループを実行します。
CAtlExeModuleT::UninitializeCom COM を初期化前の状態に戻します。
CAtlExeModuleT::Unlock モジュールのロック カウントをデクリメントします。
CAtlExeModuleT::WinMain このメソッドでは、EXE を実行するために必要なコードを実装します。

パブリック データ メンバー

名前 説明
CAtlExeModuleT::m_bDelayShutdown モジュールのシャットダウンを遅延させる必要があることを示すフラグ。
CAtlExeModuleT::m_dwPause シャットダウン前にすべてのオブジェクトを確実に解放するために使用される一時停止値。
CAtlExeModuleT::m_dwTimeOut モジュールのアップロードを遅延させるために使用されるタイムアウト値。

解説

CAtlExeModuleT は、アプリケーション (EXE) のモジュールを表し、EXE の作成、コマンド ラインの処理、クラス オブジェクトの登録、メッセージ ループの実行、終了時のクリーンアップをサポートするコードが含まれます。

このクラスは、EXE サーバー内の COM オブジェクトが継続的に作成および破棄されるときのパフォーマンスを向上するように設計されています。 最後の COM オブジェクトが解放されると、EXE は CAtlExeModuleT::m_dwTimeOut データ メンバーによって指定された期間待機します。 この期間中にアクティビティがない場合 (つまり、COM オブジェクトが作成されない場合)、シャットダウン プロセスが開始されます。

CAtlExeModuleT::m_bDelayShutdown データ メンバーは、上記で定義されたメカニズムを EXE で使用する必要があるかどうかを判断するために使用されるフラグです。 false に設定されている場合、モジュールは即座に終了します。

ATL のモジュールの詳細については、「ATL モジュール クラス」を参照してください。

継承階層

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

必要条件

ヘッダー: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

コンストラクター。

CAtlExeModuleT() throw();

解説

EXE モジュールを初期化できなかった場合、WinMain は即座に戻り、それ以上の処理は行われません。

CAtlExeModuleT::~CAtlExeModuleT

デストラクター。

~CAtlExeModuleT() throw();

解説

割り当てられているすべてのリソースを解放します。

CAtlExeModuleT::InitializeCom

COM を初期化します。

static HRESULT InitializeCom() throw();

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

解説

このメソッドは、コンストラクターから呼び出され、既定の実装とは異なる方法で COM を初期化するようにオーバーライドできます。 既定の実装では、プロジェクトの構成に応じて、CoInitializeEx(NULL, COINIT_MULTITHREADED) または CoInitialize(NULL) を呼び出します。

通常、このメソッドをオーバーライドするには、CAtlExeModuleT::UninitializeCom をオーバーライドする必要があります。

CAtlExeModuleT::m_bDelayShutdown

モジュールのシャットダウンを遅延させる必要があることを示すフラグ。

bool m_bDelayShutdown;

解説

詳細については、「CAtlExeModuleT Overview」を参照してください。

CAtlExeModuleT::m_dwPause

シャットダウン前にすべてのオブジェクトを確実に解放するために使用される一時停止値。

DWORD m_dwPause;

解説

CAtlExeModuleT::InitializeCom を呼び出した後、この値を変更して、サーバーをシャットダウンするための一時停止値として使用されるミリ秒数を設定します。 既定値は 1000 ミリ秒です。

CAtlExeModuleT::m_dwTimeOut

モジュールのアップロードを遅延させるために使用されるタイムアウト値。

DWORD m_dwTimeOut;

解説

CAtlExeModuleT::InitializeCom を呼び出した後、この値を変更して、サーバーをシャットダウンするためのタイムアウト値として使用されるミリ秒数を定義します。 既定値は 5000 ミリ秒です。 詳細については、「CAtlExeModuleT Overview」を参照してください。

CAtlExeModuleT::ParseCommandLine

コマンド ラインを解析し、必要に応じて登録を実行します。

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

パラメーター

lpCmdLine
アプリケーションに渡されるコマンド ライン。

pnRetCode
登録に対応する HRESULT (登録が行われた場合)。

戻り値

アプリケーションを引き続き実行する必要がある場合は true、それ以外の場合は false を返します。

解説

このメソッドは CAtlExeModuleT::WinMain から呼び出され、コマンド ライン スイッチを処理するためにオーバーライドできます。 既定の実装では、/RegServer および /UnRegServer コマンド ライン引数がチェックされ、登録または登録解除が実行されます。

CAtlExeModuleT::PostMessageLoop

このメソッドは、メッセージ ループが終了した直後に呼び出されます。

HRESULT PostMessageLoop() throw();

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

解説

カスタム アプリケーションのクリーンアップを実行するには、このメソッドをオーバーライドします。 既定の実装では、CAtlExeModuleT::RevokeClassObjects が呼び出されます。

CAtlExeModuleT::PreMessageLoop

このメソッドは、メッセージ ループを入力する直前に呼び出されます。

HRESULT PreMessageLoop(int nShowCmd) throw();

パラメーター

nShowCmd
WinMain で nShowCmd パラメーターとして渡される値。

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

解説

アプリケーションのカスタム初期化コードを追加するには、このメソッドをオーバーライドします。 既定の実装では、クラス オブジェクトが登録されます。

CAtlExeModuleT::RegisterClassObjects

他のアプリケーションで接続できるように、クラス オブジェクトを OLE に登録します。

HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();

パラメーター

dwClsContext
クラス オブジェクトを実行するコンテキストを指定します。 指定できる値は、CLSCTX_INPROC_SERVER、CLSCTX_INPROC_HANDLER、または CLSCTX_LOCAL_SERVER です。

dwFlags
クラス オブジェクトへの接続の種類を決定します。 指定できる値は、REGCLS_SINGLEUSE、REGCLS_MULTIPLEUSE、または REGCLS_MULTI_SEPARATE です。

戻り値

成功した場合は S_OK、登録するクラスがなかった場合は S_FALSE、失敗した場合はエラー HRESULT を返します。

CAtlExeModuleT::RevokeClassObjects

クラス オブジェクトを削除します。

HRESULT RevokeClassObjects() throw();

戻り値

成功した場合は S_OK、登録するクラスがなかった場合は S_FALSE、失敗した場合はエラー HRESULT を返します。

CAtlExeModuleT::Run

このメソッドでは、EXE モジュール内のコードを実行して初期化し、メッセージ ループを実行して、クリーンアップを行います。

HRESULT Run(int nShowCmd = SW_HIDE) throw();

パラメーター

nShowCmd
ウィンドウの表示方法を指定します。 このパラメーター、WinMain に関するセクションで説明されている値の 1 つになります。 既定値は SW_HIDE です。

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

解説

このメソッドはオーバーライドできます。 ただし、実際には、代わりに CAtlExeModuleT::PreMessageLoopCAtlExeModuleT::RunMessageLoop、または CAtlExeModuleT::PostMessageLoop をオーバーライドする方が適切です。

CAtlExeModuleT::RunMessageLoop

このメソッドでは、メッセージ ループを実行します。

void RunMessageLoop() throw();

解説

このメソッドをオーバーライドして、メッセージ ループの動作を変更できます。

CAtlExeModuleT::UninitializeCom

COM を初期化前の状態に戻します。

static void UninitializeCom() throw();

解説

既定では、このメソッドは CoUninitialize を呼び出すだけであり、デストラクターから呼び出されます。 CAtlExeModuleT::InitializeCom をオーバーライドする場合、このメソッドをオーバーライドします。

CAtlExeModuleT::Unlock

モジュールのロック カウントをデクリメントします。

LONG Unlock() throw();

戻り値

診断またはテストに役立つ可能性がある値を返します。

CAtlExeModuleT::WinMain

このメソッドでは、EXE を実行するために必要なコードを実装します。

int WinMain(int nShowCmd) throw();

パラメーター

nShowCmd
ウィンドウの表示方法を指定します。 このパラメーター、WinMain に関するセクションで説明されている値の 1 つになります。

戻り値

実行可能ファイルの戻り値を返します。

解説

このメソッドはオーバーライドできます。 CAtlExeModuleT::PreMessageLoopCAtlExeModuleT::PostMessageLoop、または CAtlExeModuleT::RunMessageLoop をオーバーライドしても十分な柔軟性が提供されない場合、このメソッドを使用して WinMain 関数をオーバーライドできます。

関連項目

ATLDuck サンプル
CAtlModuleT クラス
CAtlDllModuleT クラス
クラスの概要