Freigeben über


Überprüfen des Oplock-Zustands eines IRP_MJ_SET_INFORMATION Vorgangs

Die folgenden IRP_MJ_SET_INFORMATION Vorgänge überprüfen den Oplock-Zustand:

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

Überprüfen des oplock-Zustands für Die Vorgänge FileEndOfFileInformation, FileAllocationInformation und FileValidDataLengthInformation

Diese Informationen gelten, wenn die folgenden Vorgänge für eine Datei oder einen Stream ausgeführt werden:

  • Ein Aufrufer versucht, die logische Größe des Datenstroms zu ändern. Beachten Sie, dass keine Oplock-Überprüfung durchgeführt wird, wenn der Thread "Lazy Writer" des Cache-Managers versucht, ein neues Ende der Datei festzulegen. Dies liegt daran, dass die Überprüfung zuvor durchgeführt wird, wenn die tatsächliche Schreibanforderung empfangen wird.

  • Ein Aufrufer versucht, die zugeordnete Größe des Datenstroms zu ändern.

Bedingungen für einen Anforderungstyp der Ebene 2

  • Wechseln Sie immer auf Keine.

  • Es ist keine Bestätigung erforderlich. der Vorgang wird sofort fortgesetzt.

Bedingungen für alle anderen Anforderungstypen

  • Unterbrechen Sie IRP_MJ_SET_INFORMATION (für FileEndOfFileInformation, FileAllocationInformation und FileValidDataLengthInformation), wenn der Vorgang auf einer FILE_OBJECT mit einem oplock-Schlüssel stattfindet, der sich vom Schlüssel des FILE_OBJECT unterscheidet, der den Oplock besitzt. Wenn der Oplock unterbrochen ist, brechen Sie auf Keine um.

  • Die Bestätigungsanforderungen unterscheiden sich wie folgt:

    • Leseanforderung: Es ist keine Bestätigung erforderlich. der Vorgang wird sofort fortgesetzt.

    • Read-Handle Anforderung: Obwohl eine Bestätigung der Unterbrechung erforderlich ist, wird der Vorgang sofort fortgesetzt (d. h. ohne warten auf die Bestätigung).

    • Anforderungen der Ebene 1, Batch, Filter, Read-Write und Read-Write-Handle: Eine Bestätigung muss empfangen werden, bevor der Vorgang fortgesetzt wird.

Überprüfen des oplock-Zustands für Die Vorgänge FileRenameInformation, FileShortNameInformation und FileLinkInformation

Diese Informationen gelten, wenn die folgenden Vorgänge für eine Datei oder einen Stream ausgeführt werden:

  • Die Datei oder der Stream wird umbenannt.

  • Für die Datei wird ein kurzer Name festgelegt.

  • Für die Datei wird ein harter Link erstellt. Dies wirkt sich auf den Oplock-Zustand aus, wenn der neue hard Link einen vorhandenen Link zu einer anderen Datei ersetzt und der Oplock für den link vorhanden ist, der ersetzt wird.

  • Ein Vorgängerverzeichnis des Datenstroms, in dem sich der Oplock befindet, wird umbenannt, oder der kurze Name des Vorgängerverzeichnisses wird festgelegt.

Bedingungen für Vorgänge der Ebenen 1, Ebene 2, Lesevorgänge und Read-Write

  • Der Oplock ist nicht unterbrochen.

  • Es ist keine Bestätigung erforderlich, und der Vorgang wird sofort fortgesetzt.

Bedingungen für Batch-, Filter-, Read-Handle- und Read-Write-Handle-Vorgänge

  • Unterbrechen Sie IRP_MJ_SET_INFORMATION (für FileRenameInformation, FileShortNameInformation und FileLinkInformation), wenn der Vorgang auf einer FILE_OBJECT mit einem oplock-Schlüssel auftritt, der sich vom Schlüssel des FILE_OBJECT unterscheidet, dem der Oplock gehört. Wenn der Oplock unterbrochen ist:

    • Batch- und Filteranforderungen werden auf Keine umgebrochen.

    • Read-Handle Anforderungen werden auf Read umgebrochen.

    • Read-Write-Handle-Anforderungen werden auf Lese-/Schreibzugriff umgebrochen.

  • Eine Bestätigung muss empfangen werden, bevor der Vorgang fortgesetzt wird.

Überprüfen des oplock-Zustands für FileDispositionInformation-Vorgänge

Diese Informationen gelten, wenn ein Aufrufer versucht, die Datei zu löschen.

  • Unterbrechen Sie IRP_MJ_SET_INFORMATION (für FileDispositionInformation), wenn der Vorgang auf einem FILE_OBJECT mit einem oplock-Schlüssel auftritt, der sich vom Schlüssel des FILE_OBJECT unterscheidet, der den oplock besitzt, AND , wenn FILE_DISPOSITION_INFORMATION. DeleteFile ist TRUE**. Wenn der Oplock unterbrochen ist:

    • Read-Handle Anforderungen werden auf Read umgebrochen.

    • Read-Write-Handle-Anforderungen werden auf Lese-/Schreibzugriff umgebrochen.

  • Eine Bestätigung muss empfangen werden, bevor der Vorgang fortgesetzt wird.