Freigeben über


Dateikopie im Kernelmodus und Erkennen von Dateikopierszenarien

In diesem Artikel wird die in Windows 11, Version 22H2, eingeführte vertrauenswürdige Dateikopierfunktion im Kernelmodus beschrieben. Mit dieser Funktion können Filter problemlos Kopierszenarien erkennen. Sie ist nützlich für Antivirusfilter (AVs), die damit feststellen können, ob sie das Scannen der Quell- und Zieldateien während der Kopie zurückstellen oder vollständig überspringen können.

Um sicherzustellen, dass Lese- und Schreibvorgänge im Kernelmodus als Teil eines Kopiervorgangs sicher gekennzeichnet sind, wurden die folgenden Aktualisierungen vorgenommen:

  • Das FILE_CONTAINS_EXTENDED_CREATE_INFORMATION-Flag und die EXTENDED_CREATE_INFORMATION-Struktur wurden hinzugefügt. Dieses Flag und diese Struktur werden verwendet, um die Kopierabsicht zur Erstellungszeit über NtCreateFile zu signalisieren. Die EXTENDED_CREATE_INFORMATION-Struktur fungiert als Wrapper um den vorhandenen EaBuffer-Parameter von NtCreateFile.

    Wenn das FILE_CONTAINS_EXTENDED_CREATE_INFORMATION-Flag angegeben ist, interpretiert der E/A-Manager die Parameter EaBuffer und EaLength als EXTENDED_CREATE_INFORMATION-Struktur. Der E/A-Manager analysiert dann die Felder dieser Struktur so, als ob sie direkt für NtCreateFile bereitgestellt worden wären. Zugrunde liegende Filter erfahren keine Änderung des Verhaltens erweiterter Attribute.

  • IoCheckFileObjectOpenedAsCopySource und IoCheckFileObjectOpenedAsCopyDestination wurden hinzugefügt, um zu überprüfen, ob eine Datei für Kopierabsichten geöffnet wurde.

  • NtCopyFileChunk wurde hinzugefügt, um die Kernelmoduskopie durchzuführen.

Alle Lese- und Schreibvorgänge von NtCopyFileChunk verfügen über:

  • Den Anforderermodus des IRP mit Einstellung auf KernelMode
  • Eine IRP-Erweiterung des Typs IopCopyInformationType.

Filter haben keinen direkten Zugriff auf die IRP-Erweiterungen, können aber das Vorhandensein dieser Erweiterung überprüfen und Kopierinformationen aus den Rückrufdaten abrufen, indem Sie FltGetCopyInformationFromCallbackData aufrufen.