Programming/Windows&C#

[Windows/WinAPI] LockFIleEx

JMob 2013. 10. 19. 13:07
728x90
반응형

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변수를 이용하여 설정한다.








728x90
반응형