mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
prototype .ini-file locking
This commit is contained in:
parent
9b8c4fe51f
commit
3f5a88478e
@ -91,13 +91,22 @@ constexpr bool SI_Success(const SI_Error rc) noexcept {
|
||||
|
||||
HANDLE AcquireWriteFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd)
|
||||
{
|
||||
HANDLE hFile = CreateFile(lpIniFilePath,
|
||||
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
bool bLocked = false;
|
||||
|
||||
HANDLE hFile = CreateFile(lpIniFilePath,
|
||||
GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||
|
||||
DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK;
|
||||
bool const bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd);
|
||||
|
||||
if (hFile != INVALID_HANDLE_VALUE) {
|
||||
DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK;
|
||||
bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd);
|
||||
if (!bLocked) {
|
||||
MsgBoxLastError(L"AcquireWriteFileLock(): NO LOCK ACQUIRED!", 0); // @@@§§§
|
||||
}
|
||||
}
|
||||
else {
|
||||
MsgBoxLastError(L"AcquireWriteFileLock(): INVALID_HANDLE_VALUE!", 0); // @@@§§§
|
||||
}
|
||||
return (bLocked ? hFile : INVALID_HANDLE_VALUE);
|
||||
}
|
||||
|
||||
@ -105,13 +114,22 @@ HANDLE AcquireWriteFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd)
|
||||
|
||||
HANDLE AcquireReadFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd)
|
||||
{
|
||||
bool bLocked = false;
|
||||
|
||||
HANDLE hFile = CreateFile(lpIniFilePath,
|
||||
GENERIC_READ, FILE_SHARE_READ,
|
||||
nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||
|
||||
DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK;
|
||||
bool const bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd);
|
||||
|
||||
if (hFile != INVALID_HANDLE_VALUE) {
|
||||
DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK;
|
||||
bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd);
|
||||
if (!bLocked) {
|
||||
MsgBoxLastError(L"AcquireReadFileLock(): NO LOCK ACQUIRED!", 0); // @@@§§§
|
||||
}
|
||||
}
|
||||
else {
|
||||
MsgBoxLastError(L"AcquireReadFileLock(): INVALID_HANDLE_VALUE", 0); // @@@§§§
|
||||
}
|
||||
return (bLocked ? hFile : INVALID_HANDLE_VALUE);
|
||||
}
|
||||
|
||||
@ -816,6 +834,7 @@ extern "C" bool CreateIniFile()
|
||||
CloseHandle(hFile);
|
||||
}
|
||||
else {
|
||||
MsgBoxLastError(L"CreateIniFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§
|
||||
dwFileSize = INVALID_FILE_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1434,6 +1434,7 @@ CSimpleIniTempl<SI_CHAR, SI_STRLESS, SI_CONVERTER>::LoadFile(
|
||||
nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
MsgBoxLastError(L"CSimpleIni::LoadFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§
|
||||
return SI_Error::SI_FILE;
|
||||
}
|
||||
|
||||
@ -2629,10 +2630,11 @@ CSimpleIniTempl<SI_CHAR, SI_STRLESS, SI_CONVERTER>::SaveFile(
|
||||
) const
|
||||
{
|
||||
HANDLE hFile = CreateFile(a_pwszFile,
|
||||
FILE_GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
MsgBoxLastError(L"CSimpleIni::SaveFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§
|
||||
return SI_Error::SI_FILE;
|
||||
}
|
||||
|
||||
|
||||
@ -9404,7 +9404,8 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
|
||||
}
|
||||
if (bCreateFile) {
|
||||
HANDLE hFile = CreateFile(szFileName,
|
||||
GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||||
NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
|
||||
Globals.dwLastError = GetLastError();
|
||||
fSuccess = (hFile != INVALID_HANDLE_VALUE);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user