Click to Rate and Give Feedback
MSDN
MSDN Library
System Services
File Services
File Systems
File Management
 LockFile Function
LockFile Function

Locks the specified file for exclusive access by the calling process.

To specify additional options, use the LockFileEx function.

Syntax

C++
BOOL WINAPI LockFile(
  __in  HANDLE hFile,
  __in  DWORD dwFileOffsetLow,
  __in  DWORD dwFileOffsetHigh,
  __in  DWORD nNumberOfBytesToLockLow,
  __in  DWORD nNumberOfBytesToLockHigh
);

Parameters

hFile [in]

A handle to the file. The file handle must have been created with the GENERIC_READ or GENERIC_WRITE access right. For more information, see File Security and Access Rights.

dwFileOffsetLow [in]

The low-order 32 bits of the starting byte offset in the file where the lock should begin.

dwFileOffsetHigh [in]

The high-order 32 bits of the starting byte offset in the file where the lock should begin.

nNumberOfBytesToLockLow [in]

The low-order 32 bits of the length of the byte range to be locked.

nNumberOfBytesToLockHigh [in]

The high-order 32 bits of the length of the byte range to be locked.

Return Value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

If the call to LockFile completes synchronously, a completion entry may not be queued when a completion port is associated with the file handle.

The UnlockFile function unlocks a file region locked by LockFile.

Locking a region of a file gives the threads of the locking process exclusive access to the specified region using this file handle. If the file handle is inherited by a process created by the locking process, the child process is not granted access to the locked region. If the locking process opens the file a second time, it cannot access the specified region through this second handle until it unlocks the region.

Locking a region of a file does not prevent reading from a mapped file view.

You can lock bytes that are beyond the end of the current file. This is useful to coordinate adding records to the end of a file.

Locks may not overlap an existing locked region of the file.

If LockFile cannot lock a region of a file, it returns zero immediately. It does not block. To issue a file lock request that will block until the lock is acquired, use LockFileEx without LOCKFILE_FAIL_IMMEDIATELY.

If a process terminates with a portion of a file locked or closes a file that has outstanding locks, the locks are unlocked by the operating system. However, the time it takes for the operating system to unlock these locks depends upon available system resources. Therefore, it is recommended that your process explicitly unlock all files it has locked when it terminates. If this is not done, access to these files may be denied if the operating system has not yet unlocked them.

Examples

For an example, see Appending One File to Another File.

Requirements

Minimum supported clientWindows 2000 Professional
Minimum supported serverWindows 2000 Server
HeaderWinBase.h (include Windows.h)
LibraryKernel32.lib
DLLKernel32.dll

See Also

CreateFile
File Management Functions
LockFileEx
UnlockFile

Send comments about this topic to Microsoft

Build date: 11/12/2009

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
vb.net syntax      dmex   |   Edit   |   Show History
<DllImport("kernel32.dll", SetLastError:=True)> _
Public Shared Function LockFile(ByVal handle As IntPtr, ByVal offsetLow As Integer, ByVal offsetHigh As Integer, ByVal countLow As Integer, ByVal countHigh As Integer) As Boolean
End Function
Flag as ContentBug
C# syntax      dmex   |   Edit   |   Show History
[DllImport("kernel32.dll", SetLastError=true)]
internal static extern bool LockFile(IntPtr handle, int offsetLow, int offsetHigh, int countLow, int countHigh);
Tags What's this?: c# (x) syntax (x) Add a tag
Flag as ContentBug
You don't need pinvoke or DLLimport      cheeso   |   Edit   |   Show History
In managed code, you can just call the FileStream.Lock() method.
http://msdn.microsoft.com/en-us/library/system.io.filestream.lock.aspx
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker