/* ΠΠ»Π°Π²Π° 3. ΠΊΠΎΠΌΠ°Π½Π΄Π° touch. */
/* touch [ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ] [ΡΠ°ΠΉΠ»Ρ] */
#include "EvryThng.h"
int _tmain(int argc, LPTSTR argv[]) {
SYSTEMTIME SysTime;
FILETIME NewFileTime;
LPFILETIME pAccessTime = NULL, pModifyTime = NULL;
HANDLE hFile;
BOOL Flags[MAX_OPTIONS], SetAccessTime, SetModTime, CreateNew;
DWORD CreateFlag;
int i, FileIndex;
FileIndex = Options(argc, argv, _T("amc"), &Flags[0], &Flags[1], &Flags[2], NULL);
SetAccessTime = !Flags[0];
SetModTime = !Flags[1];
CreateNew = !Flags[2];
CreateFlag = CreateNew ? OPEN_ALWAYS : OPEN_EXISTING;
for (i = FileIndex; i < argc; i++) {
hFile = CreateFile(argv[i], GENERIC_READ | GENERIC_WRITE, 0, NULL, CreateFlag, FILE_ATTRIBUTE_NORMAL, NULL);
GetSystemTime(&SysTime);
SystemTimeToFileTime(&SysTime, &NewFileTime);
if (SetAccessTime) pAccessTime = &NewFileTime;
if (SetModTime) pModifyTime = &NewFileTime;
SetFileTime(hFile, NULL, pAccessTime, pModifyTime);
CloseHandle(hFile);
}
return 0;
}
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²
Π£ΠΆΠ΅ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°Π΄ΠΈΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΅Π³ΠΎ ΠΊ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Windows. Π₯Π°ΡΠ°ΠΊΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ "ΠΈΠ»ΠΈ-ΠΈΠ»ΠΈ", ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠ΄ΠΎΠΌ ΡΠ²Π½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ², ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
β’ ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΏΡΡΠΌΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΡΡΠ΅Π΄ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Windows, ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΡΠΎΠΊ.
β’ Π€ΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Windows.
β’ Π€ΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊ ΡΠΎΡΠΌΠ΅, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΡΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅, Ρ ΠΎΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΡΠ΅ΡΡΠ½Ρ.
β’ ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 7, ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² ΡΡΠ΅Π΄Π°Ρ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ Π½Π°Π»Π°Π³Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. Π ΠΏΠΎΠ»ΡΠ·Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
β’ Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ².
β’ Π ΡΡΠ½ΠΊΡΠΈΠΈ fseek, Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 32-Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΉΠ»Π°, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 3.1, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ.
β’ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ Π·Π°ΡΠΈΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² ΡΡΠ΄Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ UNIX-ΠΊΠΎΠ΄Π° Ρ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ (compatibility library). Microsoft Π‘ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, Ρ ΠΎΡΡ ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅, ΡΡΠ½ΠΊΡΠΈΠΈ UNIX. Π ΡΠΈΡΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ UNIX, Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΡΠΎΡΡΠ°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Microsoft, ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ , Π² Π½Π΅ΠΉ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ. Π ΠΈΠΌΠ΅Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ-Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, _read, _write, _stat ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π Π΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈ Win32/64 API Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Windows Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ , Π° Π΄Π»Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΡΡΡΡ Π²Π°ΠΌ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΡΠ°ΠΊΡΠΎΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΅ΡΠ°ΡΡΠΈΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΎΡΠΎΠ±ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ (ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ) ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°ΠΌ.
Π Windows ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ (ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ) ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°) Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΡΠ°ΡΡΠΊΡ ΡΠ°ΠΉΠ»Π°. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ (ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ Π΄ΠΎΡΡΡΠΏ) ΠΈΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΊΠ°ΠΊ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ (ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ). Π§ΡΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎ, Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π° (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ReadFile ΠΈΠ»ΠΈ WriteFile) Π² Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΆΠ΅ Π²Π»Π°Π΄Π΅Π΅Ρ Π΄Π°Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²; ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π°ΡΠ½Π΅ΡΡΡ Π² Π³Π»Π°Π²Π΅ 8.
ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ LockFileEx, ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ β LockFile, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π² Windows 9x.
Π€ΡΠ½ΠΊΡΠΈΡ LockFileEx ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ (extended) Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ 64-Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈ Π³ΡΠ°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ OVERLAPPED, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π½Π΅Π΅ ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ReadFile ΠΈ WriteFile.
BOOL LockFileEx(HANDLE hFile, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
Π€ΡΠ½ΠΊΡΠΈΡ LockFileEx Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΡΠ°ΡΡΠΎΠΊ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π»ΠΈΠ±ΠΎ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ), Π»ΠΈΠ±ΠΎ Π΄Π»Ρ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ).
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡhFile β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ Π»ΠΈΠ±ΠΎ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° GENERIC_READ, Π»ΠΈΠ±ΠΎ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° GENERIC_READ ΠΈ GENERIC_WRITE.
dwFlags β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΈΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ Π·Π°ΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
LOCKFILE_EXCLUSIVE_LOCK β Π·Π°ΠΏΡΠΎΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½ΠΈΠ΅).
LOCKFILE_FAIL_IMMEDIATELY β Π·Π°Π΄Π°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π²Π½ΡΠΌ FALSE, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ.
dwReserved β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌ 0. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΠ΅ 32-Π±ΠΈΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΡΠ°ΠΉΠ»Π° (Π² Π±Π°ΠΉΡΠ°Ρ ).
lpOverlapped β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ OVERLAPPED, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΡΠ°Π»Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ°. Π ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ), ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°Π»Π° Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π°.
β’ DWORD Offset (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π° Π½Π΅ OffsetLow).
β’ DWORD OffsetHigh.
β’ HANDLE hEvent Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌ 0.
Π§ΡΠΎΠ±Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ», ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ UnlockFileEx, Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ dwFlags, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
BOOL UnlockFileEx(HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°:
β’ ΠΡΠ°Π½ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΡΠ°Π½Π΅Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°Π½Π΅Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅ΠΉ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FALSE, Π° Π² Π²ΡΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
β’ ΠΠ½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
β’ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΊΠ°, Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.