BOOL WINAPI LockFileEx( _In_ HANDLE hFile, ------① _In_ DWORD dwFlags, ------② _Reserved_ DWORD dwReserved, ------③ _In_ DWORD nNumberOfBytesToLockLow, ------④ _In_ DWORD nNumberOfBytesToLockHigh, ------⑤ _Inout_ LPOVERLAPPED lpOverlapped ------⑥ );
CreateFile 함수로 오픈한 파일에 Lock을 건다. LockFile와의 차이로는 LockFile은 배타적인 잠금만 가등하지만 LockFIleEx는 공유적인 잠금도 가능하다. 플래그 값을 0으로 주면 공유잠금이 되며 배타적인 잠금을 하기 위해서는 LOCKFILE_EXCLUSIVE_LOCK설정 해주어야 한다. 함수가 성공시 0이아닌 값을 리턴한다.
① hFile :
파일의 핸들을 넘겨준다.
② dwFlags :
플래그 값을 설정한다.
Falg |
|
0(zero) | 공유 잠금을 설정한다. |
LOCKFILE_EXCLUSIVE_LOCK |
배타적 잠금을 설정한다. |
LOCKFILE_FAIL_IMMEDIATELY |
락이 이미 결려있는경우 즉시 끝나버리지만 이 플래그를 설정하면 블락 되는것을 막을 수 있다. |
밑에 두개의 플래그는 OR로 묶을수 있다.
③ dwReserves :
항상 0을 설정한다.
④ nNumberOfBytesToLockLow :
잠금을 걸 끝위치를 지정해준다. (32bit로 4G이하 파일)
⑤ nNumberOfByteToLockHigh :
잠금을 걸 끝위치를 지정해준다. (64bit 4G이상 파일)
⑥ IpOverlapped :
잠금을 거는 시작 위치를 지정해준다. 이때 OVERLAPPED의 구조체의 Offset과 OffsetHigh변수를 이용하여 설정한다.
BOOL WINAPI UnlockFileEx( _In_ HANDLE hFile, -----① _Reserved_ DWORD dwReserved, -----② _In_ DWORD nNumberOfBytesToUnlockLow, -----③ _In_ DWORD nNumberOfBytesToUnlockHigh, -----④ _Inout_ LPOVERLAPPED lpOverlapped -----⑤ );
함수 설명 :
LockFIleEx에 의해 걸린 락을 해제한다. 성공시 0이 아닌 값을 리턴한다.
① hFile :
파일의 핸들을 넘겨준다.
② dwReserved :
예약된 값으로 0을 넘겨준다.
③ nNumberIfBytesToUnlockLow
해재할 파일의 바이트 끝점을 넘겨준다 (32bit )
④ nNumberIfBytesToUnlockHigh
해재할 파일의 바이트 끝점을 넘겨준다. (64bit)
⑤ lpOverlapped :
잠금을 해제하는 시작 위치를 지정해준다. 이때 OVERLAPPED의 구조체의 Offset과 OffsetHigh변수를 이용하여 설정한다.
'Programming > Windows&C#' 카테고리의 다른 글
[Windows/WinAPI] RegOpenKeyEx, RegEnumKeyEx, RegEnumValue (0) | 2013.10.21 |
---|---|
[Windows/WinAPI] RegCreateKeyEx, (0) | 2013.10.20 |
[Windows/WinAPI] GetFileSizeEX, GetFileAttributes, SetFileAttributes, FileTimeToSystemTime (0) | 2013.10.18 |
[Windows/WinAPI] FindFirstFile, FindNextFile, FindClose (0) | 2013.10.18 |
[Windows/WinAPI] SetFilePointer (0) | 2013.10.18 |