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 原生系統服務例程的 NtXxx 和 ZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxx 和 ZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 |
目標平台 | Universal |
標頭 | ntifs.h (包括 Ntifs.h、FltKernel.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅一节) |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) 、 PowerIrpDDis (wdm) |