Oplock の同期

排他的な便宜的ロック (oplock) を要求するフィルターとファイル システムは、システム提供の便宜的ロックパッケージに呼び出しを同期する必要があります。 特に、(便宜的ロックを確立するために) 便宜的ロック FSCTRL ルーチンの呼び出しは、便宜的ロックチェック中断ルーチンの呼び出しに対して同期する必要があります。 ルーチンの両方のセットの一覧を次に示します。

便宜的ロック要求を処理する場合、フィルターとファイル システムは次のことを確認する必要があります。

  • 便宜的ロックを中断する可能性のある I/O は、要求の処理と並行して行うことはできません。
  • 便宜的ロック要求は、便宜的ロック解除の受信確認と同時に行うことはできません。

同じファイル制御ブロック (FCB) の排他的な便宜的ロックの作成を要求する IRP 呼び出しは次のとおりです。

便宜的ロック同期の例を次に示します。

  • 便宜的ロック要求を処理する場合、ファイル システムは一部のリソースを排他的に取得し、FsRtlOplockFsctrlEx を呼び出して、リソースを解放します。

  • 便宜的ロック解除の受信確認を処理する場合、ファイル システムは共有されている同じリソースを取得し、FsRtlOplockFsctrlEx を呼び出して、リソースを解放します。

  • I/O を実行すると、ファイル システムはその同じリソース共有を取得し、FsRtlCheckOplockEx2 を呼び出し、I/O を実行して、リソースを解放します。

    上位のファイル システムでは、FsRtlCheckUpperOplockFsRtlUpperOplockFsctrl の呼び出しを同様の方法で同期させる必要があります。