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,则调用方将置于等待状态,直到操作成功,此时事件将设置为“已信号”状态。
[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 本机系统服务例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本**。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h、FltKernel.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅备注部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI,PowerIrpDDis |