Solution46
LibCommon::CMapping クラス

マッピングクラス [詳解]

#include "CMapping.h"

LibCommon::CMapping の継承関係図
Inheritance graph
LibCommon::CMapping 連携図
Collaboration graph

公開メンバ関数

 CMapping () noexcept
 コンストラクタ [詳解]
 
virtual ~CMapping () noexcept
 デストラクタ [詳解]
 
virtual HANDLE GetHandle () const noexcept override
 マッピングハンドル取得関数 [詳解]
 
virtual LPVOID GetView () const noexcept
 ビューポインタ取得関数 [詳解]
 
virtual void Close () noexcept override
 クローズ関数 [詳解]
 
virtual bool Create (DWORD dwSize, wchar_t const *pszObjectName=nullptr) noexcept
 作成関数 [詳解]
 
virtual bool Open (wchar_t const *pszObjectName) noexcept override
 オープン関数 [詳解]
 
- 基底クラス LibCommon::CMutex に属する継承公開メンバ関数
 CMutex () noexcept
 コンストラクタ [詳解]
 
virtual ~CMutex () noexcept
 デストラクタ [詳解]
 
virtual bool Release () noexcept override
 リリース関数 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) noexcept override
 ロック関数 [詳解]
 
virtual bool Unlock () noexcept override
 ロック解除関数 [詳解]
 
virtual bool Create (wchar_t const *pszObjectName=nullptr) noexcept
 作成関数 [詳解]
 
- 基底クラス LibCommon::CSync に属する継承公開メンバ関数
 CSync () noexcept
 コンストラクタ [詳解]
 
virtual ~CSync () noexcept
 デストラクタ [詳解]
 
virtual bool IsCreate () const noexcept
 新規作成状態取得関数 [詳解]
 
virtual bool Wait (DWORD dwTime=INFINITE) noexcept
 ウェイト関数 [詳解]
 

限定公開変数類

HANDLE m_hMapping
 マッピングハンドル [詳解]
 
LPVOID m_pView
 ビューポインタ [詳解]
 
- 基底クラス LibCommon::CMutex に属する継承限定公開変数類
DWORD m_dwLockCount
 ロックカウント [詳解]
 
- 基底クラス LibCommon::CSync に属する継承限定公開変数類
HANDLE m_hObject
 オブジェクトハンドル [詳解]
 
bool m_bIsCreate
 新規作成フラグ [詳解]
 

静的限定公開変数類

static wchar_t const *const OBJECT_NAME_EXT = L".CMapping"
 オブジェクト名拡張子 [詳解]
 
- 基底クラス LibCommon::CMutex に属する継承静的限定公開変数類
static wchar_t const *const OBJECT_NAME_EXT = L".CMutex"
 オブジェクト名拡張子 [詳解]
 

非公開メンバ関数

 CMapping (CMapping const &)=delete
 
CMappingoperator= (CMapping const &)=delete
 

詳解

マッピングクラス

マッピングクラスです。

注意
なし

CMapping.h30 行目に定義があります。

構築子と解体子

LibCommon::CMapping::CMapping ( )
explicitnoexcept

コンストラクタ

コンストラクタです。

引数
なし
戻り値
なし
注意
なし

CMapping.cpp29 行目に定義があります。

31  : CMutex()
32  // メンバ変数初期化
33  , m_hMapping( nullptr )
34  , m_pView( nullptr )
35  {}
LPVOID m_pView
ビューポインタ
Definition: CMapping.h:131
HANDLE m_hMapping
マッピングハンドル
Definition: CMapping.h:130
CMutex() noexcept
コンストラクタ
Definition: CMutex.cpp:29
LibCommon::CMapping::~CMapping ( )
virtualnoexcept

デストラクタ

デストラクタです。

引数
なし
戻り値
なし
注意
なし

CMapping.cpp39 行目に定義があります。

参照先 Close().

39  {
40  // クローズする
41  Close();
42  }
virtual void Close() noexcept override
クローズ関数
Definition: CMapping.cpp:48

呼び出し関係図:

LibCommon::CMapping::CMapping ( CMapping const &  )
privatedelete

関数詳解

virtual HANDLE LibCommon::CMapping::GetHandle ( ) const
inlineoverridevirtualnoexcept

マッピングハンドル取得関数

マッピングハンドル取得関数です。

引数
なし
戻り値
マッピングハンドル
注意
オーバーライド関数です。

LibCommon::CSyncを再実装しています。

CMapping.h68 行目に定義があります。

68 { return m_hMapping; }
HANDLE m_hMapping
マッピングハンドル
Definition: CMapping.h:130
virtual LPVOID LibCommon::CMapping::GetView ( ) const
inlinevirtualnoexcept

ビューポインタ取得関数

ビューポインタ取得関数です。

引数
なし
戻り値
ビューポインタ
注意
なし

CMapping.h79 行目に定義があります。

参照元 LibLogOut::CLibLogOut::CLibLogOut(), LibNewDel::CLibNewDel::CLibNewDel().

79 { return m_pView; }
LPVOID m_pView
ビューポインタ
Definition: CMapping.h:131

被呼び出し関係図:

void LibCommon::CMapping::Close ( )
overridevirtualnoexcept

クローズ関数

クローズ関数です。

引数
なし
戻り値
なし
注意
オーバーライド関数です。

LibCommon::CMutexを再実装しています。

CMapping.cpp48 行目に定義があります。

参照先 LibCommon::CMutex::Close(), m_hMapping, m_pView.

参照元 LibLogOut::CLibLogOut::CLibLogOut(), LibNewDel::CLibNewDel::CLibNewDel(), Create(), Open(), ~CMapping().

48  {
49  // ビューマップを解放する
50  ::UnmapViewOfFile( m_pView );
51 
52  // マッピングをクローズする
53  ::CloseHandle( m_hMapping );
54 
55  // メンバ変数を初期化する
56  m_hMapping = nullptr;
57  m_pView = nullptr;
58 
59  // 基底クラスの関数を実行する
60  CMutex::Close();
61  }
LPVOID m_pView
ビューポインタ
Definition: CMapping.h:131
HANDLE m_hMapping
マッピングハンドル
Definition: CMapping.h:130
virtual void Close() noexcept override
クローズ関数
Definition: CMutex.cpp:47

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CMapping::Create ( DWORD  dwSize,
wchar_t const *  pszObjectName = nullptr 
)
virtualnoexcept

作成関数

作成関数です。

引数
[in]dwSize共有メモリサイズ
[in]pszObjectNameオブジェクト名
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CMapping.cpp65 行目に定義があります。

参照先 LibCommon::CMutex::Close(), Close(), LibCommon::CMutex::Create(), LibCommon::CSync::m_bIsCreate, m_hMapping, m_pView, OBJECT_NAME_EXT.

参照元 LibLogOut::CLibLogOut::CLibLogOut(), LibNewDel::CLibNewDel::CLibNewDel().

65  {
66  // 処理ブロック
67  bool result = false;
68  do {
69  // マッピングハンドルを調べる
70  if ( nullptr != m_hMapping ) {
71  // クローズする
72  Close();
73  }
74  // ミューテックスを作成する
75  else if ( !CMutex::Create( pszObjectName ) ) {
76  // 失敗!
77  break;
78  }
79  // 同期処理ブロック
80  else do {
81  CSyncAuto cSyncAuto( *this );
82 
83  // オブジェクト名を調べる
84  wchar_t szBuffer[ MAX_PATH ];
85  if ( nullptr != pszObjectName ) {
86  // オブジェクト名に拡張子を追加する
87  ::wcscpy_s( szBuffer, pszObjectName );
88  ::wcscat_s( szBuffer, OBJECT_NAME_EXT );
89  pszObjectName = szBuffer;
90  }
91 
92  // マッピングを作成する
93  m_hMapping = ::CreateFileMappingW( nullptr, nullptr, PAGE_READWRITE, 0, dwSize, pszObjectName );
94  if ( nullptr == m_hMapping ) {
95  // 失敗!
96  break;
97  }
98 
99  // ビューメモリをマップする
100  m_pView = ::MapViewOfFile( m_hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
101  if ( nullptr == m_pView ) {
102  // マッピングをクローズする
103  ::CloseHandle( m_hMapping );
104  m_hMapping = nullptr;
105 
106  // 失敗!
107  break;
108  }
109  // 新規作成フラグを調べる
110  else if ( m_bIsCreate ) {
111  // メモリをクリアする
112  ::memset( m_pView, 0, dwSize );
113  }
114 
115  // 成功!
116  result = true;
117  } while ( false );
118 
119  // 実行結果を調べる
120  if ( !result ) {
121  // ミューテックスをクローズする
122  CMutex::Close();
123  }
124  } while ( false );
125 
126  // 実行結果を返す
127  return result;
128  }
LPVOID m_pView
ビューポインタ
Definition: CMapping.h:131
bool m_bIsCreate
新規作成フラグ
Definition: CSync.h:153
virtual bool Create(wchar_t const *pszObjectName=nullptr) noexcept
作成関数
Definition: CMutex.cpp:143
HANDLE m_hMapping
マッピングハンドル
Definition: CMapping.h:130
virtual void Close() noexcept override
クローズ関数
Definition: CMutex.cpp:47
virtual void Close() noexcept override
クローズ関数
Definition: CMapping.cpp:48
static wchar_t const *const OBJECT_NAME_EXT
オブジェクト名拡張子
Definition: CMapping.h:125

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CMapping::Open ( wchar_t const *  pszObjectName)
overridevirtualnoexcept

オープン関数

オープン関数です。

引数
[in]pszObjectNameオブジェクト名
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバーライド関数です。

LibCommon::CMutexを再実装しています。

CMapping.cpp132 行目に定義があります。

参照先 LibCommon::CMutex::Close(), Close(), m_hMapping, m_pView, OBJECT_NAME_EXT, LibCommon::CMutex::Open().

132  {
133  // 処理ブロック
134  bool result = false;
135  do {
136  // オブジェクト名を調べる
137  if ( nullptr == pszObjectName ) {
138  // 失敗!
139  break;
140  }
141  // マッピングハンドルを調べる
142  else if ( nullptr != m_hMapping ) {
143  // クローズする
144  Close();
145  }
146  // ミューテックスをオープンする
147  else if ( !CMutex::Open( pszObjectName ) ) {
148  // 失敗!
149  break;
150  }
151  // 同期処理ブロック
152  else do {
153  CSyncAuto cSyncAuto( *this );
154 
155  // オブジェクト名に拡張子を追加する
156  wchar_t szBuffer[ MAX_PATH ];
157  ::wcscpy_s( szBuffer, pszObjectName );
158  ::wcscat_s( szBuffer, OBJECT_NAME_EXT );
159  pszObjectName = szBuffer;
160 
161  // マッピングをオープンする
162  m_hMapping = ::OpenFileMappingW( FILE_MAP_ALL_ACCESS, false, pszObjectName );
163  if ( nullptr == m_hMapping ) {
164  // 失敗!
165  break;
166  }
167 
168  // ビューメモリをマップする
169  m_pView = ::MapViewOfFile( m_hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
170  if ( nullptr == m_pView ) {
171  // マッピングをクローズする
172  ::CloseHandle( m_hMapping );
173  m_hMapping = nullptr;
174 
175  // 失敗!
176  break;
177  }
178 
179  // 成功!
180  result = true;
181  } while ( false );
182 
183  // 実行結果を調べる
184  if ( !result ) {
185  // ミューテックスをクローズする
186  CMutex::Close();
187  }
188  } while ( false );
189 
190  // 実行結果を返す
191  return result;
192  }
LPVOID m_pView
ビューポインタ
Definition: CMapping.h:131
HANDLE m_hMapping
マッピングハンドル
Definition: CMapping.h:130
virtual void Close() noexcept override
クローズ関数
Definition: CMutex.cpp:47
virtual bool Open(wchar_t const *pszObjectName) noexcept
オープン関数
Definition: CMutex.cpp:184
virtual void Close() noexcept override
クローズ関数
Definition: CMapping.cpp:48
static wchar_t const *const OBJECT_NAME_EXT
オブジェクト名拡張子
Definition: CMapping.h:125

呼び出し関係図:

CMapping& LibCommon::CMapping::operator= ( CMapping const &  )
privatedelete

メンバ詳解

wchar_t const *const LibCommon::CMapping::OBJECT_NAME_EXT = L".CMapping"
staticprotected

オブジェクト名拡張子

CMapping.h125 行目に定義があります。

参照元 Create(), Open().

HANDLE LibCommon::CMapping::m_hMapping
protected

マッピングハンドル

CMapping.h130 行目に定義があります。

参照元 Close(), Create(), Open().

LPVOID LibCommon::CMapping::m_pView
protected

ビューポインタ

CMapping.h131 行目に定義があります。

参照元 Close(), Create(), Open().


このクラス詳解は次のファイルから抽出されました: