ZwLockFile 函式 (ntifs.h)

ZwLockFile 例程會要求指定檔案的位元組範圍鎖定。

語法

NTSYSAPI NTSTATUS ZwLockFile(
  [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,則位元組範圍鎖定為獨佔;否則為共享鎖定。

傳回值

ZwLockFile 例程會傳回STATUS_SUCCESS或適當的錯誤 NTSTATUS 值,例如下列其中一項。

錯誤碼 描述
STATUS_INSUFFICIENT_RESOURCES 資源不足,無法授與指定檔案的位元組範圍鎖定。
STATUS_LOCK_NOT_GRANTED 未為指定的檔案授與位元組範圍鎖定。

備註

ZwLockFile 的呼叫端必須在 IRQL = PASSIVE_LEVEL且啟用特殊核心 APC 時執行

注意

如果在使用者模式中呼叫 ZwLockFile 函式,您應該使用名稱 “NtLockFile”,而不是 “ZwLockFile”。

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
最低支援的用戶端 Windows 7
目標平台 Universal
標頭 ntifs.h (包括 Ntifs.h、FltKernel.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅一节)
DDI 合規性規則 HwStorPortProhibitedDIS (storport) PowerIrpDDis (wdm)

另請參閱

使用 Nt 和 Zw 版本的原生系統服務例程

ZwUnlockFile