Solution46
LibCommon::CProcess クラス

プロセスクラス [詳解]

#include "CProcess.h"

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

公開メンバ関数

 CProcess () noexcept
 コンストラクタ [詳解]
 
virtual ~CProcess () noexcept
 デストラクタ [詳解]
 
virtual DWORD GetProcessId () const noexcept
 プロセスID取得関数 [詳解]
 
virtual void Close () noexcept override
 クローズ関数 [詳解]
 
virtual bool Release () noexcept override
 リリース関数 [詳解]
 
virtual bool Create (wchar_t const *pszPath, wchar_t const *pszArgument=nullptr) noexcept
 作成関数 [詳解]
 
virtual bool Open (DWORD dwProcessId, DWORD dwAccess=SYNCHRONIZE) noexcept
 オープン関数 [詳解]
 
virtual bool Terminate (DWORD dwExitCode=0) noexcept
 強制終了関数 [詳解]
 
virtual DWORD GetExitCode () const noexcept
 終了コード取得関数 [詳解]
 
- 基底クラス LibCommon::CSync に属する継承公開メンバ関数
 CSync () noexcept
 コンストラクタ [詳解]
 
virtual ~CSync () noexcept
 デストラクタ [詳解]
 
virtual HANDLE GetHandle () const noexcept
 オブジェクトハンドル取得関数 [詳解]
 
virtual bool IsCreate () const noexcept
 新規作成状態取得関数 [詳解]
 
virtual bool Wait (DWORD dwTime=INFINITE) noexcept
 ウェイト関数 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) noexcept
 ロック関数 [詳解]
 
virtual bool Unlock () noexcept
 ロック解除関数 [詳解]
 

限定公開変数類

DWORD m_dwProcessId
 プロセスID [詳解]
 
- 基底クラス LibCommon::CSync に属する継承限定公開変数類
HANDLE m_hObject
 オブジェクトハンドル [詳解]
 
bool m_bIsCreate
 新規作成フラグ [詳解]
 

非公開メンバ関数

 CProcess (CProcess const &)=delete
 
CProcessoperator= (CProcess const &)=delete
 

詳解

プロセスクラス

プロセスクラスです。

注意
なし

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

構築子と解体子

LibCommon::CProcess::CProcess ( )
explicitnoexcept

コンストラクタ

コンストラクタです。

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

CProcess.cpp28 行目に定義があります。

30  : CSync()
31  // メンバ変数初期化
32  , m_dwProcessId( 0 )
33  {}
DWORD m_dwProcessId
プロセスID
Definition: CProcess.h:152
CSync() noexcept
コンストラクタ
Definition: CSync.cpp:28
LibCommon::CProcess::~CProcess ( )
virtualnoexcept

デストラクタ

デストラクタです。

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

CProcess.cpp37 行目に定義があります。

参照先 Close().

37  {
38  // クローズする
39  Close();
40  }
virtual void Close() noexcept override
クローズ関数
Definition: CProcess.cpp:46

呼び出し関係図:

LibCommon::CProcess::CProcess ( CProcess const &  )
privatedelete

関数詳解

virtual DWORD LibCommon::CProcess::GetProcessId ( ) const
inlinevirtualnoexcept

プロセスID取得関数

プロセスID取得関数です。

引数
なし
戻り値
プロセスID
注意
なし

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

68 { return m_dwProcessId; }
DWORD m_dwProcessId
プロセスID
Definition: CProcess.h:152
void LibCommon::CProcess::Close ( )
overridevirtualnoexcept

クローズ関数

クローズ関数です。

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

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

CProcess.cpp46 行目に定義があります。

参照先 LibCommon::CSync::Close(), m_dwProcessId.

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

46  {
47  // 基底クラスの関数を実行する
48  CSync::Close();
49 
50  // メンバ変数を初期化する
51  m_dwProcessId = 0;
52  }
virtual void Close() noexcept
クローズ関数
Definition: CSync.cpp:45
DWORD m_dwProcessId
プロセスID
Definition: CProcess.h:152

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CProcess::Release ( )
overridevirtualnoexcept

リリース関数

リリース関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

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

CProcess.cpp56 行目に定義があります。

参照先 Terminate().

56  {
57  // 強制終了する
58  return Terminate();
59  }
virtual bool Terminate(DWORD dwExitCode=0) noexcept
強制終了関数
Definition: CProcess.cpp:144

呼び出し関係図:

bool LibCommon::CProcess::Create ( wchar_t const *  pszPath,
wchar_t const *  pszArgument = nullptr 
)
virtualnoexcept

作成関数

作成関数です。

引数
[in]pszPath実行ファイルパス
[in]pszArgument引数文字列
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CProcess.cpp63 行目に定義があります。

参照先 Close(), m_dwProcessId, LibCommon::CSync::m_hObject.

63  {
64  // 処理ブロック
65  bool result = false;
66  do {
67  // 実行ファイルパスを調べる
68  if ( nullptr == pszPath ) {
69  // 失敗!
70  break;
71  }
72  // プロセスハンドルを調べる
73  else if ( nullptr != m_hObject ) {
74  // クローズする
75  Close();
76  }
77 
78  // 実行ファイルパスをコピーする
79  wchar_t szBuffer[ MAX_PATH ];
80  ::wcscpy_s( szBuffer, pszPath );
81 
82  // 引数文字列を調べる
83  if ( nullptr != pszArgument ) {
84  // 引数文字列を追加する
85  ::wcscat_s( szBuffer, L" \"" );
86  ::wcscat_s( szBuffer, pszArgument );
87  ::wcscat_s( szBuffer, L"\"" );
88  }
89 
90  // プロセスを作成する
91  STARTUPINFOW sStartupInfo = {};
92  PROCESS_INFORMATION sProcessInfo = {};
93  if ( 0 == ::CreateProcessW( nullptr, szBuffer, nullptr, nullptr, false, CREATE_NEW_CONSOLE, nullptr, nullptr, &sStartupInfo, &sProcessInfo ) ) {
94  // 失敗!
95  break;
96  }
97 
98  // プロセスハンドルを取得する
99  m_hObject = sProcessInfo.hProcess;
100 
101  // プロセスIDを取得する
102  m_dwProcessId = sProcessInfo.dwProcessId;
103 
104  // 成功!
105  result = true;
106  } while ( false );
107 
108  // 実行結果を返す
109  return result;
110  }
virtual void Close() noexcept override
クローズ関数
Definition: CProcess.cpp:46
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
DWORD m_dwProcessId
プロセスID
Definition: CProcess.h:152

呼び出し関係図:

bool LibCommon::CProcess::Open ( DWORD  dwProcessId,
DWORD  dwAccess = SYNCHRONIZE 
)
virtualnoexcept

オープン関数

オープン関数です。

引数
[in]dwProcessIdプロセスID
[in]dwAccessアクセスフラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CProcess.cpp114 行目に定義があります。

参照先 Close(), m_dwProcessId, LibCommon::CSync::m_hObject.

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

114  {
115  // 処理ブロック
116  bool result = false;
117  do {
118  // プロセスハンドルを調べる
119  if ( nullptr != m_hObject ) {
120  // クローズする
121  Close();
122  }
123 
124  // プロセスをオープンする
125  m_hObject = ::OpenProcess( dwAccess, false, dwProcessId );
126  if ( nullptr == m_hObject ) {
127  // 失敗!
128  break;
129  }
130 
131  // プロセスIDを設定する
132  m_dwProcessId = dwProcessId;
133 
134  // 成功!
135  result = true;
136  } while ( false );
137 
138  // 実行結果を返す
139  return result;
140  }
virtual void Close() noexcept override
クローズ関数
Definition: CProcess.cpp:46
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
DWORD m_dwProcessId
プロセスID
Definition: CProcess.h:152

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CProcess::Terminate ( DWORD  dwExitCode = 0)
virtualnoexcept

強制終了関数

強制終了関数です。

引数
[in]dwExitCode終了コード
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CProcess.cpp144 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

参照元 Release().

144  {
145  // 処理ブロック
146  bool result = false;
147  do {
148  // プロセスを強制終了する
149  if ( 0 == ::TerminateProcess( m_hObject, dwExitCode ) ) {
150  // 失敗!
151  break;
152  }
153 
154  // 成功!
155  result = true;
156  } while ( false );
157 
158  // 実行結果を返す
159  return result;
160  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152

被呼び出し関係図:

DWORD LibCommon::CProcess::GetExitCode ( ) const
virtualnoexcept

終了コード取得関数

終了コード取得関数です。

引数
なし
戻り値
プロセス終了コード
注意
なし

CProcess.cpp164 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

164  {
165  // 処理ブロック
166  DWORD result = 0;
167  do {
168  // プロセス終了コードを取得する
169  DWORD dwExitCode;
170  if ( 0 == ::GetExitCodeProcess( m_hObject, &dwExitCode ) ) {
171  // 失敗!
172  break;
173  }
174 
175  // 成功!
176  result = dwExitCode;
177  } while ( false );
178 
179  // 実行結果を返す
180  return result;
181  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
CProcess& LibCommon::CProcess::operator= ( CProcess const &  )
privatedelete

メンバ詳解

DWORD LibCommon::CProcess::m_dwProcessId
protected

プロセスID

CProcess.h152 行目に定義があります。

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


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