TNB Library
TnbFileLocker.h
[詳解]
1#pragma once
11#include "TnbHandleHandle.h"
12
13
14
15//TNB Library
16namespace TNB
17{
18
19
20
32{
33 CHandleHandle m_hhFile;
34public:
35
37 CFileLocker(void) : m_hhFile(INVALID_HANDLE_VALUE)
38 {
39 }
40
43 {
44 Unlock();
45 }
46
52 bool IsLock(void) const
53 {
54 return ! m_hhFile.IsNull();
55 }
56
63 bool Lock(LPCTSTR lpszName)
64 {
65 Unlock();
66 DWORD dwDesiredAccess = GENERIC_READ;
67 DWORD dwShareMode = (FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE);
68 DWORD dwCreationDisp = OPEN_EXISTING;
69 m_hhFile = ::CreateFile(lpszName, dwDesiredAccess, dwShareMode, NULL, dwCreationDisp, 0, NULL);
70 _GetLastError("CreateFile");
71 if ( ! m_hhFile.IsNull() && ::LockFile(m_hhFile, 0, 0, DWORD_MAX, DWORD_MAX) )
72 {
73 return true;
74 }
75 m_hhFile.Null();
76 return false;
77 }
78
83 void Unlock(void)
84 {
85 if ( ! m_hhFile.IsNull() )
86 {
87 ::UnlockFile(m_hhFile, 0, 0, DWORD_MAX, DWORD_MAX);
88 m_hhFile.Null();
89 }
90 }
91};
92
93
94
95}; // TNB
ハンドルハンドル関係のヘッダ
[ETC] コピー不可能スーパークラス.
Definition: TnbDef.h:599
ファイルロック管理クラス
Definition: TnbFileLocker.h:32
void Unlock(void)
[排他] アンロック
Definition: TnbFileLocker.h:83
~CFileLocker(void)
デストラクタ
Definition: TnbFileLocker.h:42
CFileLocker(void)
コンストラクタ
Definition: TnbFileLocker.h:37
bool IsLock(void) const
[確認] ロック状態
Definition: TnbFileLocker.h:52
bool Lock(LPCTSTR lpszName)
[排他] ロック
Definition: TnbFileLocker.h:63
HANDLE型ハンドルハンドル
bool IsNull(void) const
[確認] NULLチェック
void Null(void)
[設定] 開放.
TNB Library
Definition: TnbDoxyTitle.txt:2