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 モジュール クラス」を参照してください。
継承階層
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::PreMessageLoop、CAtlExeModuleT::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::PreMessageLoop、CAtlExeModuleT::PostMessageLoop、または CAtlExeModuleT::RunMessageLoop をオーバーライドしても十分な柔軟性が提供されない場合、このメソッドを使用して WinMain
関数をオーバーライドできます。