共用方式為


FsRtlCheckOplock 宏 (rxprocs.h)

FsRtlCheckOplock 例程會同步處理檔案 I/O 作業的 IRP 與檔案目前的商機鎖定 (oplock) 狀態。

語法

void FsRtlCheckOplock(
   A1,
   A2,
   A3,
   A4,
   A5
);

參數

A1

檔案不透明的不透明鎖定指標。 此指標必須由 先前對 FsRtlInitializeOplock 的呼叫初始化。

A2

I/O 作業之 IRP 的指標。

A3

要傳遞至 CompletionRoutinePostIrpRoutine 參數所指向之回呼例程之呼叫端定義內容資訊的指標。

A4

呼叫端提供的回呼例程指標。 如果作業鎖定中斷正在進行中,當中斷完成時,就會呼叫此例程。 此參數是選擇性的,可以是 NULL。 如果是 NULL,則呼叫端會進入等候狀態,直到作業鎖定中斷完成為止。

此例程宣告如下:

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

此例程具有下列參數:

上下文

在 Context 參數中傳遞至 FsRtlCheckOplock的內容資訊指標。

Irp

I/O 作業之 IRP 的指標。

A5

如果 I/O 作業張貼至工作佇列,則呼叫端提供的回呼例程指標。 此參數是選擇性的,可以是 NULL

此例程宣告如下:

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      IN PVOID Context,
      IN PIRP Irp
      );

上下文

在 Context 參數中傳遞至 FsRtlCheckOplock的內容資訊指標。

Irp

I/O 作業之 IRP 的指標。

傳回值

備註

FsRtlCheckOplock 會根據下列條件,同步處理 I/O 作業的 IRP 與檔案目前的商機鎖定狀態:

  • 如果 I/O 作業會導致機會鎖定中斷,則會起始機會鎖定中斷。
  • 如果 I/O 作業在作業中斷完成之前無法繼續, FsRtlCheckOplock 會傳回STATUS_PENDING,並呼叫 PostIrpRoutine 參數指向的回呼例程。
如果文件系統或篩選驅動程式使用機會鎖定,它必須從任何可能會造成機會鎖定中斷的 I/O 作業分派例程呼叫 FsRtlCheckOplock 。 此規則適用於下列 I/O 作業類型,因為這些作業可能會導致機會鎖定中斷:

IRP_MJ_CLEANUP

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_LOCK_CONTROL

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_WRITE

如需有關機會鎖定的詳細資訊,請參閱 Microsoft Windows SDK 檔。

Minifilters 應該呼叫 FltCheckOplock ,而不是 FsRtlCheckOplock

規格需求

需求
最低支援的用戶端 此例程適用於 Microsoft Windows 2000 和更新版本的 Windows 操作系統。
目標平台 Universal
標頭 rxprocs.h (包括 FltKernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockFsctrl

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock