CComSafeDeleteCriticalSection クラス
このクラスにより、クリティカル セクション オブジェクトの所有権を取得および解放するメソッドが提供されます。
構文
class CComSafeDeleteCriticalSection : public CComCriticalSection
メンバー
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
| CComSafeDeleteCriticalSection::CComSafeDeleteCriticalSection | コンストラクターです。 |
| CComSafeDeleteCriticalSection::~CComSafeDeleteCriticalSection | デストラクターです。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
| CComSafeDeleteCriticalSection::Init | クリティカル セクション オブジェクトを作成して初期化します。 |
| CComSafeDeleteCriticalSection::Lock | クリティカル セクション オブジェクトの所有権を取得します。 |
| CComSafeDeleteCriticalSection::Term | クリティカル セクション オブジェクトによって使用されるシステム リソースを解放します。 |
データ メンバー
| データ メンバー | 説明 |
|---|---|
| m_bInitialized | 内部 CRITICAL_SECTION オブジェクトが初期化されているかどうかを示すフラグを設定します。 |
解説
CComSafeDeleteCriticalSection は、クラス CComCriticalSection から派生します。 しかし、CComSafeDeleteCriticalSection では、CComCriticalSection に対する追加の安全性メカニズムが提供されます。
CComSafeDeleteCriticalSection のインスタンスがスコープ外に出るか、明示的にメモリから削除されると、基になるクリティカル セクション オブジェクトが有効な場合は自動的にクリーンアップされます。 また、基になるクリティカル セクション オブジェクトがまだ割り当てられていないか、既にメモリから解放されている場合、CComSafeDeleteCriticalSection:: Term メソッドは正常に終了します。
クリティカル セクション ヘルパー クラスの詳細については、「CComCriticalSection」を参照してください。
継承階層
CComSafeDeleteCriticalSection
必要条件
ヘッダー: atlcore.h
CComSafeDeleteCriticalSection::CComSafeDeleteCriticalSection
コンストラクターです。
CComSafeDeleteCriticalSection();
注釈
m_bInitialized データ メンバーを FALSE に設定します。
CComSafeDeleteCriticalSection::~CComSafeDeleteCriticalSection
デストラクターです。
~CComSafeDeleteCriticalSection() throw();
注釈
m_bInitialized データ メンバーが TRUE に設定されている場合、メモリから内部 CRITICAL_SECTION オブジェクトを解放します。
CComSafeDeleteCriticalSection::Init
Init の基底クラスの実装を呼び出し、成功した場合は m_bInitialized を TRUE に設定します。
HRESULT Init() throw();
戻り値
CComCriticalSection::Init の結果を返します。
CComSafeDeleteCriticalSection::Lock
Lock の基底クラスの実装を呼び出します。
HRESULT Lock();
戻り値
CComCriticalSection::Lock の結果を返します。
解説
このメソッドは、エントリ時に m_bInitialized データ メンバーが TRUE に設定されていることを前提としています。 この条件が満たされない場合、デバッグ ビルドでアサーションが生成されます。
関数の動作の詳細については、「CComCriticalSection::Lock」を参照してください。
CComSafeDeleteCriticalSection::m_bInitialized
内部 CRITICAL_SECTION オブジェクトが初期化されているかどうかを示すフラグを設定します。
bool m_bInitialized;
解説
m_bInitialized データ メンバーは、CComSafeDeleteCriticalSection クラスに関連付けられている、基になる CRITICAL_SECTION オブジェクトの有効性を追跡するために使用されます。 このフラグが TRUE に設定されていない場合、基になる CRITICAL_SECTION オブジェクトはメモリから解放されません。
CComSafeDeleteCriticalSection::Term
内部 CRITICAL_SECTION オブジェクトが有効な場合は、CComCriticalSection:: Term の基本クラスの実装を呼び出します。
HRESULT Term() throw();
戻り値
CComCriticalSection::Term の結果、または、エントリ時に m_bInitialized が FALSE に設定されている場合は S_OK を返します。
解説
内部 CRITICAL_SECTION オブジェクトが有効でない場合でも、このメソッドを呼び出すことに問題はありません。 m_bInitialized データ メンバーが TRUE に設定されている場合、このクラスのデストラクターはこのメソッドを呼び出します。