FsRtlUpperOplockFsctrl 関数 (ntifs.h)
FsRtlUpperOplockFsctrl ルーチンは、セカンダリ または階層化されたファイル システムの opportunistic lock (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 型の詳細については、「 Oplock の種類」を参照してください。
[in] LowerOplockState
上位ファイル システムによって保持される下位の oplock レベルの値。 これは、次のビットごとの OR の組み合わせです。
値 | 意味 |
---|---|
OPLOCK_LEVEL_CACHE_READ | oplock Read (R) 型を示します。 |
OPLOCK_LEVEL_CACHE_WRITE | oplock Write (W) 型を示します。 |
OPLOCK_LEVEL_CACHE_HANDLE | oplock Handle (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 受信確認は許可されません。 上位ファイル・システムのロック・レベルは、下位ファイル・システムの oplock では無効です。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示