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」を参照してください。

継承階層

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 に設定されている場合、このクラスのデストラクターはこのメソッドを呼び出します。

関連項目

CComCriticalSection クラス
クラスの概要