IRP_MJ_SET_INFORMATION オペレーションの Oplock 状態の確認

次の IRP_MJ_SET_INFORMATION 操作は、oplock の状態をチェックします。

  • FileEndOfFileInformation
  • FileAllocationInformation
  • FileValidDataLengthInformation
  • FileRenameInformation
  • FileShortNameInformation
  • FileLinkInformation
  • FileDispositionInformation

FileEndOfFileInformation、FileAllocationInformation、および FileValidDataLengthInformation 操作の oplock 状態のチェック

この情報は、ファイルまたはストリームに対して次の操作が実行されているときに適用されます。

  • 呼び出し元はストリームの論理サイズを変更しようとします。 キャッシュ マネージャーの遅延ライター スレッドが新しいファイルの終わりを設定しようとすると、oplock チェックは行われないことに注意してください。 これは、実際の書き込み要求を受信したときに事前にチェックが行われるためです。

  • 呼び出し元は、ストリームの割り当てられたサイズを変更しようとします。

レベル 2 リクエスト タイプの条件

  • 常に None にブレークします。

  • 確認は必要なく、操作はすぐに続行されます。

他のすべてのリクエストタイプの条件

  • oplock を所有する FILE_OBJECT のキーと異なる oplock キーを持つ FILE_OBJECT で操作が発生した場合、IRP_MJ_SET_INFORMATION (FileEndOfFileInformation、FileAllocationInformation、および FileValidDataLengthInformation の場合) で中断します。 oplock が壊れている場合は、None に解除します。

  • 確認の要件は次のように異なります。

    • 読み取りリクエスト: 確認応答は必要ありません。操作はすぐに続行されます。

    • Read-Handle リクエスト: ブレークの承認が必要ですが、操作はすぐに (つまり、承認を待たずに) 続行されます。

    • レベル 1、バッチ、フィルター、読み取り/書き込み、および読み取り/書き込み/ハンドルのリクエスト: 操作を続行する前に確認応答を受信する必要があります。

FileRenameInformation、FileShortNameInformation、および FileLinkInformation 操作の oplock 状態の確認

この情報は、ファイルまたはストリームに対して次の操作が実行されているときに適用されます。

  • ファイルまたはストリームの名前が変更されています。

  • ファイルには短い名前が設定されています。

  • ファイルのハードリンクが作成されています。 これは、新しいハード リンクが別のファイルへの既存のリンクを置き換える場合、および置き換えられるリンク上に oplock が存在する場合、oplock の状態に影響します。

  • oplock が存在するストリームの祖先ディレクトリの名前が変更されているか、祖先ディレクトリの短縮名が設定されています。

レベル 1、レベル 2、読み取り、および読み取り/書き込み操作の条件

  • oplock は壊れていません。

  • 確認は必要なく、操作はすぐに続行されます。

バッチ、フィルター、読み取りハンドル、読み取り書き込みハンドルの条件

  • oplock を所有する FILE_OBJECT のキーと異なる oplock キーを持つ FILE_OBJECT で操作が発生した場合、IRP_MJ_SET_INFORMATION (FileRenameInformation、FileShortNameInformation、および FileLinkInformation の場合) で中断します。 oplock が壊れている場合:

    • バッチおよびフィルターリクエストは「なし」に中断されます。

    • 読み取りハンドル要求は読み取りに中断されます。

    • 読み取り-書き込み-ハンドル要求は読み取り-書き込みに中断されます。

  • 操作を続行するには、確認応答を受信する必要があります。

FileDispositionInformation 操作の oplock 状態の確認

この情報は、呼び出し元がファイルを削除しようとするときに適用されます。

  • oplock キーを持つ FILE_OBJECT で操作が oplock を所有する FILE_OBJECT のキーと異なる場合、およびFILE_DISPOSITION_INFORMATION.DeleteFile が TRUE** の場合に、IRP_MJ_SET_INFORMATION (FileDispositionInformation の場合) に中断します。 oplock が壊れている場合:

    • 読み取りハンドル要求は読み取りに中断されます。

    • 読み取り-書き込み-ハンドル要求は読み取り-書き込みに中断されます。

  • 操作を続行するには、確認応答を受信する必要があります。