Hallo @Jann Heck ,
vielen Dank für die präzise Abgrenzung. Ich habe die öffentlich verfügbare Microsoft-Dokumentation geprüft und stütze meine Antwort ausschließlich darauf. Wo ich keine dokumentierte Aussage finden konnte, kennzeichne ich das ausdrücklich. Die FileIo-Klassen fand ich nur generisch für File-I/O dokumentiert (Mindestversion Windows Vista, EventVersion(2)). Eine pipe-spezifische Semantik oder eine Buildbindung für 26200 habe ich nicht gefunden. Anonyme Pipes sind laut Anonymous Pipe Operations als Named Pipes mit eindeutigem Namen implementiert, daher gilt für sie meines Erachtens dasselbe.
1. Handle / Objekt / Endpoint
- Unterstützt:
FileObject(in FileIo_Create, FileIo_ReadWrite, FileIo_SimpleOp und FileIo_Info) korreliert Operationen derselben Dateiobjektinstanz zwischen Create und Close. Den Namen erhalten Sie, indem SieFileKeymit dem FeldFileObjectin FileIo_Name abgleichen. - Folgendes konnte ich in dieser Quelle nicht finden:
- die Zuordnung zwischen prozesslokalem HANDLE und FileObject; kein FileIo-Ereignis enthält einen HANDLE-Wert,
- die Pipeinstanz und die Server-/Clientseite,
- einzelne
CloseHandle-Aufrufe (laut FileIo_SimpleOp: Cleanup = letztes Handle, Close = Freigabe des Objekts), - vererbte Handles,
- Regeln zur Wiederverwendung von
FileObject.
- Als separate Quelle auf Handle-Ebene habe ich Security Auditing 4656, 4658 und 4690 gefunden, mit
HandleId,ProcessIdund Duplizierung (Voraussetzungen: SACL und Audit Handle Manipulation). Diese Ereignisse haben jedoch kein FileObject-Feld, und eine dokumentierte Verknüpfung zu ETW FileIo konnte ich nicht finden.
2. Request / Completion / Menge
- Unterstützt:
IoSizein FileIo_ReadWrite ist die angeforderte Länge. ÜberIrpPtrlässt sich das Ereignis mit FileIo_OpEnd korrelieren, dasNtStatusenthält.ExtraInfo= tatsächlich gelesene Bytes, allerdings nur als Beispiel für Read dokumentiert. - Keine dokumentierte Aussage habe ich gefunden zu:
-
ExtraInfobei Writes, - STATUS_PENDING bzw. Zwischenzuständen,
- Teilübertragung, Cancel und Retry,
- der Wiederverwendung von
IrpPtr.
-
3. Operationsabdeckung
- Abgedeckt (generisch): Create/Open (64), Read (67), Write (68), Flush (73; die Semantik ist als „flushed to disk“ beschrieben, nicht für Pipes).
- Nicht durch diese Quelle unterstützt: Connect, Disconnect, Cancel, einzelnes Close.
- FSControl (75) existiert laut FileIo_Info, aber eine dokumentierte Abbildung auf
ConnectNamedPipe/DisconnectNamedPipehabe ich nicht gefunden.
- FSControl (75) existiert laut FileIo_Info, aber eine dokumentierte Abbildung auf
- Ereignislose Pfade: Laut IRPs Are Different From Fast I/O versucht der I/O-Manager bei synchronem I/O zuerst Fast I/O. Ist das erfolgreich, wird kein IRP erzeugt. Ob dabei FileIo-Ereignisse entstehen und ob NPFS Fast I/O nutzt, ist meines Wissens nicht dokumentiert.
4. Start / Loss / Dekodierung
- Laut EVENT_TRACE_PROPERTIES gilt:
-
FILE_IO_INIT(0x04000000) aktiviert Create/ReadWrite/SimpleOp/Info, -
FILE_IO(0x02000000) aktiviert nurOpEnd, -
DISK_FILE_IO(0x200,FileIo_Name) erfordert zusätzlichDISK_IO.
FileIo:{90cbdc39-4a3e-11d1-84f4-0000f80464e3}. -
- Ab Windows 10 SDK 20348 ist laut System Providers alternativ
SystemIoProviderGuid{3d5c43e3-0f1c-4202-b817-174c0070dc79}möglich. Die dortige Keyword-Zuordnung fürFILE_IO_INIThalte ich jedoch für unklar dokumentiert. - Erforderliche Rechte laut Controlling Event Tracing Sessions: Administrator, Performance Log Users oder LocalSystem/LocalService/NetworkService. Für Ereignisversionen jenseits von v2 habe ich kein öffentliches Schema gefunden.
- Verlustinformationen:
EventsLost/BuffersLostin EventTrace_Header und RT_LostEvent. Diese Zähler sagen nichts darüber aus, ob eine Ereignisklasse überhaupt erzeugt wurde. Ihre Interpretation halte ich daher für korrekt.
Fazit: Nach meiner Prüfung ist ein vollständiger Nachweis innerhalb des begrenzten ETW-Profils nicht möglich. Security Auditing ergänzt die Handle-Ebene nur teilweise und ohne dokumentierte Verknüpfung zu FileObject. Für buildgebundene Aussagen oder NPFS-Interna empfehle ich Ihnen einen Microsoft-Support-Fall.
Ich hoffe, dies hilft Ihnen bei der Beantwortung Ihrer Fragen. Wenn Sie meine Antwort hilfreich oder informativ fanden, würde ich mich sehr freuen, wenn Sie der Anleitung hier folgen, damit auch andere mit einem ähnlichen Problem davon profitieren können.
Vielen Dank.