FsRtlInitializeFileLock function (ntifs.h)

The FsRtlInitializeFileLock routine initializes a FILE_LOCK structure.

Syntax

void FsRtlInitializeFileLock(
  [in]           PFILE_LOCK                 FileLock,
  [in, optional] PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine,
  [in, optional] PUNLOCK_ROUTINE            UnlockRoutine
);

Parameters

[in] FileLock

Pointer to an uninitialized FILE_LOCK structure.

[in, optional] CompleteLockIrpRoutine

Pointer to a PCOMPLETE_LOCK_IRP_ROUTINE-typed callback routine to be called when an IRP_MJ_LOCK_CONTROL request is completed. This parameter is optional and can be NULL.

[in, optional] UnlockRoutine

Pointer to a PUNLOCK_ROUTINE-typed callback routine to be called when the byte range is unlocked. This parameter is optional and can be NULL.

Return value

None

Remarks

FsRtlInitializeFileLock initializes an uninitialized FILE_LOCK structure.

It is a programming error to call FsRtlInitializeFileLock for a FILE_LOCK structure that has already been initialized by FsRtlInitializeFileLock or FltAllocateFileLock, unless the structure has been uninitialized by a subsequent call to FsRtlUninitializeFileLock.

Once initialized, the FILE_LOCK structure can be used to lock a byte range in a file by calling FsRtlProcessFileLock orFsRtlFastLock. FsRtlProcessFileLock processes lock IRPs. FsRtlFastLock performs non-IRP locking.

When the FILE_LOCK structure is no longer needed, it can be uninitialized by calling FsRtlUninitializeFileLock. The uninitialized FILE_LOCK structure can then be initialized for reuse by calling FsRtlInitializeFileLock.

Minifilters must call FltInitializeFileLock instead of FsRtlInitializeFileLock.

Requirements

Requirement Value
Target Platform Universal
Header ntifs.h (include Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI compliance rules HwStorPortProhibitedDDIs(storport)

See also

FILE_LOCK

FltInitializeFileLock

FltAllocateFileLock

FsRtlAreThereCurrentFileLocks

FsRtlFastLock

FsRtlProcessFileLock

FsRtlUninitializeFileLock

IRP_MJ_LOCK_CONTROL

IoCompleteRequest

PCOMPLETE_LOCK_IRP_ROUTINE

PUNLOCK_ROUTINE