次の方法で共有


FsRtlUpperOplockFsctrl 関数 (ntifs.h)

FsRtlUpperOplockFsctrl ルーチンは、セカンダリ または階層化されたファイル システムに対する日和見ロック (oplock) 要求と受信確認を処理します。 上位のファイル システムは、下位ファイル システムに保持されている oplock の状態を送信します。 FsRtlUpperOplockFsctrl 、上位ファイル システムの oplock を許可するか拒否するかを決定します。

構文

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [in] ULONG   Flags
);

パラメーター

[in] Oplock

ファイルの不透明な oplock ポインター。 このポインターは、FsRtlInitializeOplockへの以前の呼び出しによって初期化されている必要があります。

[in] Irp

I/O 操作の IRP へのポインター。

[in] OpenCount

排他 oplock が要求されている場合の、ファイルのユーザー ハンドルの数。 レベル 2、R、または RH oplock 要求に 0 以外の値を設定すると、ファイルにバイト範囲ロックがあることを示します。 oplock 型の詳細については、「Oplocksの種類」を参照してください。

[in] LowerOplockState

上位のファイル システムによって保持される下位の oplock レベルの値。 これは、次のビットごとの OR の組み合わせです。

価値 意味
OPLOCK_LEVEL_CACHE_READ oplock Read (R) 型を示します。
OPLOCK_LEVEL_CACHE_WRITE Oplock Write (W) 型を示します。
OPLOCK_LEVEL_CACHE_HANDLE oplock ハンドル (H) 型を示します。

[in] Flags

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

価値 意味
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) ファイル システムは、現在開いているハンドルのすべての oplock キーが一致することを確認しました。 このフラグを指定すると、ファイルに対する複数のオープン ハンドルが存在する場合に、oplock パッケージがレベル RW または RWH の oplock を許可できるようになります。

戻り値

FsRtlUpperOplockFsctrl は、次のいずれかの NTSTATUS 値を返します。

リターン コード 形容
STATUS_SUCCESS IRP_MJ_CREATE要求の場合、STATUS_SUCCESSは、要求されたフィルターの日和見ロック (oplock) が許可されたことを示します。 FSCTL 操作の場合、STATUS_SUCCESSの意味は FSCTL コードによって異なります。 詳細については、「FsRtlOplockFsctrlExの「解説」セクションを参照してください。
STATUS_CANCELLED I/O 操作が取り消されました。 STATUS_CANCELLEDはエラー コードです。
STATUS_INVALID_PARAMETER I/O 操作の FSCTL コードが有効な値の oplock 要求ではなかった。 有効な要求の種類は、FsRtlOplockFsctrlExの「解説」セクションに記載されています。 STATUS_INVALID_PARAMETERはエラー コードです。
STATUS_OPLOCK_NOT_GRANTED oplock を許可できませんでした。 要求された上位ファイル システムの oplock レベルは、下位ファイル システムに対して付与された oplock に対して無効です。 STATUS_OPLOCK_NOT_GRANTEDはエラー コードです。
STATUS_PENDING FSCTL 操作にのみ使用されます。 STATUS_PENDINGの意味は、FSCTL コードによって異なります。 詳細については、「FsRtlOplockFsctrlExの「解説」セクションを参照してください。 STATUS_PENDINGは成功コードです。
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK 新しい oplock の oplock 受信確認は許可されません。 上位ファイル・システムのロック・レベルは、下位ファイル・システム・オペロックでは無効です。

必要条件

要件 価値
サポートされる最小クライアント Windows 8.1
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

関連項目

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx