11 Stimmen

Korrespondenz zwischen ProcMon und den CreateFile-Dispositionsoptionen

Process Monitor zeigt die Dispositions-Option für die CreateFile-Operation als "Open", "OpenIf", "Overwrite", "OverwriteIf" (kann auch etwas anderes sein) an. Wie unterscheiden sich die Optionen, die "If" enthalten, von denen, die es nicht tun? Und welchen CreateFile WinAPI-Funktionsflags entsprechen sie?

11voto

Hans Passant Punkte 894572

CreateFile() ist die WinAPI-Funktion. Process Monitor patcht jedoch das native Betriebssystem, es ähnelt nur oberflächlich der WinAPI. Es ist ziemlich ähnlich zu VMS, dem Betriebssystem, das Dave Cutler entworfen hat, als er noch bei DEC arbeitete. Process Monitor hookt NtCreateFile, folgen Sie dem Link, um die dokumentierten Werte des CreateDisposition-Arguments zu sehen. Kopiert:

  • FILE_SUPERSEDE. Wenn die Datei bereits existiert, ersetzen Sie sie durch die angegebene Datei. Wenn nicht, erstellen Sie die angegebene Datei.
  • FILE_CREATE. Wenn die Datei bereits existiert, schlagen Sie die Anforderung fehl und erstellen oder öffnen Sie die angegebene Datei nicht. Wenn nicht, erstellen Sie die angegebene Datei.
  • FILE_OPEN. Wenn die Datei bereits existiert, öffnen Sie sie anstelle von Erstellen einer neuen Datei. Wenn nicht, schlagen Sie die Anforderung fehl und erstellen Sie keine neue Datei.
  • FILE_OPEN_IF. Wenn die Datei bereits existiert, öffnen Sie sie. Wenn nicht, erstellen Sie die angegebene Datei.
  • FILE_OVERWRITE. Wenn die Datei bereits existiert, öffnen Sie sie und überschreiben Sie sie. Wenn nicht, schlagen Sie die Anforderung fehl.
  • FILE_OVERWRITE_IF. Wenn die Datei bereits existiert, öffnen Sie sie und überschreiben Sie sie. Wenn nicht, erstellen Sie die angegebene Datei.

7voto

Ian Boyd Punkte 232380

CreateFile dwCreationDisposition

NtCreateFile CreateDisposition

Process Monitor Disposition

n/a

FILE_SUPERSEDE (0)

Ersetzen (?)

OPEN_EXISTING (3)

FILE_OPEN (1)

Öffnen

TRUNCATE_EXISTING (5)

FILE_OPEN (1)

Öffnen

CREATE_NEW (1)

FILE_CREATE (2)

Erstellen

OPEN_ALWAYS (4)

FILE_OPEN_IF (3)

ÖffnenWenn

n/a

FILE_OVERWRITE (4)

Überschreiben (?)

CREATE_ALWAYS (2)

FILE_OVERWRITE_IF (5)

ÜberschreibenWenn

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X