次の方法で共有


FSCTL_REQUEST_OPLOCK 制御コード

FSCTL_REQUEST_OPLOCK 制御コードは、ファイルに対して便宜的ロック (oplock) を要求するか、oplock の解除が発生したことを確認します。

便宜的ロックの詳細については、Windows デスクトップ ドキュメントの「便宜的ロック」を参照してください。 ユーザー モードの OPLOCK 制御の詳細については、Windows デスクトップ ドキュメントの「ファイル管理の制御コード」を参照してください。

この制御コードを処理するために、ファイル システムまたはフィルター ドライバーは、次のパラメーターを指定して FsRtlOplockFsctrlEx を呼び出します。

パラメーター

  • Oplock: ファイルの不透明な oplock オブジェクト ポインター。

  • Irp: IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 要求の IRP へのポインター。 操作の FsControlCode パラメーターは FSCTL_REQUEST_OPLOCK である必要があります。

  • OpenCount: 要求が排他的な oplock である場合、ファイルのユーザー ハンドルの数。 共有できる oplock に対する要求で、ファイルにバイト範囲ロックが存在しない場合、OpenCount はゼロになります。 それ以外の場合、OpenCount は 0 以外になります。 呼び出し元は、要求が共有できる oplock 用かどうかを判断するために、IRP に対する FsRtlOplockIsSharedRequest ルーチンを呼び出すことができます。

  • Flags: 関連付けられている oplock 操作のビットマスク。 ファイル システムまたはフィルター ドライバーによって、FsRtlOplockFsctrlEx の動作を指定するビットが設定されます。 Flags パラメーターには次のオプションがあります。

    Value 意味
    OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) 現在開いているすべてのハンドルに対して、すべての便宜的ロック キーが一致することがファイル システムによって確認されたことを指定します。 このフラグを指定することで、ファイルに対する複数のオープン ハンドルが存在する場合に、oplock パッケージがレベル RW または RWH の oplock を許可できます。 oplock の種類の詳細については、概要を参照してください。

ステータスブロック

FsRtlOplockFsctrlEx はこの操作に対して次のいずれかの NTSTATUS 値を返します。

コード 意味
STATUS_PENDING oplock が許可されました。 これは成功コードです。
STATUS_CANCELLED FSCTL_REQUEST_OPLOCK 操作が完了する前に IRP が取り消されました。 これはエラー コードです。
STATUS_OPLOCK_NOT_GRANTED oplock を許可できませんでした。 これはエラー コードです。

要件

要件タイプ 要件
ヘッダー Ntifs.h (Ntifs.h または Fltkernel.h を含む)

関連項目

FsRtlOplockFsctrlEx

FsRtlOplockIsSharedRequest

IRP_MJ_FILE_SYSTEM_CONTROL