NtLockFile 函数 (ntifs.h)

NtLockFile 例程请求指定文件的字节范围锁。

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtLockFile(
  [in]           HANDLE           FileHandle,
  [in, optional] HANDLE           Event,
  [in, optional] PIO_APC_ROUTINE  ApcRoutine,
  [in, optional] PVOID            ApcContext,
  [out]          PIO_STATUS_BLOCK IoStatusBlock,
  [in]           PLARGE_INTEGER   ByteOffset,
  [in]           PLARGE_INTEGER   Length,
  [in]           ULONG            Key,
  [in]           BOOLEAN          FailImmediately,
  [in]           BOOLEAN          ExclusiveLock
);

参数

[in] FileHandle

请求字节范围锁的文件的句柄。

[in, optional] Event

调用方创建的事件的句柄。 如果未 为 NULL,则调用方将置于等待状态,直到操作成功,此时事件将设置为 Signaled 状态。

[in, optional] ApcRoutine

指向调用方提供的 APC 例程的指针,该例程在操作完成后执行。 可以为 NULL

[in, optional] ApcContext

指向 APC 例程的调用方指定上下文的指针。 执行此值时会传递给 APC 例程。 可以为 NULL

[out] IoStatusBlock

指向包含最终状态 的IO_STATUS_BLOCK 结构的指针。

[in] ByteOffset

指向指定要锁定的范围起始字节偏移量的变量的指针。

[in] Length

指向指定要锁定的范围长度(以字节为单位)的变量的指针。

[in] Key

用于描述相关锁组的调用方分配的值。 此值应设置为零。

[in] FailImmediately

如果 为 TRUE,则当文件无法锁定时立即返回。 如果 为 FALSE,请等待授予锁请求。

[in] ExclusiveLock

如果 为 TRUE,则字节范围锁为独占;否则为共享锁。

返回值

NtLockFile 例程返回STATUS_SUCCESS或相应的错误 NTSTATUS 值。 可能的 NTSTATUS 值包括:

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES 资源不足,无法授予指定文件的字节范围锁。
STATUS_LOCK_NOT_GRANTED 未为指定文件授予字节范围锁。

注解

NtLockFile 的调用方必须在 IRQL = PASSIVE_LEVEL且启用了特殊内核 APC**

注意

如果在用户模式下调用 NtLockFile 函数,则应使用名称“NtLockFile”而不是“ZwLockFile”。

对于内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式可能有所不同。 有关例程 的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本**

要求

   
最低受支持的客户端 Windows 7
目标平台 通用
标头 ntifs.h (包括 Ntifs.h、FltKernel.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDDIs,PowerIrpDDis

另请参阅

ZwUnlockFile