FLT_FILE_NAME_INFORMATION-Struktur (fltkernel.h)

Die FLT_FILE_NAME_INFORMATION-Struktur enthält Dateinameninformationen.

Syntax

typedef struct _FLT_FILE_NAME_INFORMATION {
  USHORT                     Size;
  FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
  FLT_FILE_NAME_OPTIONS      Format;
  UNICODE_STRING             Name;
  UNICODE_STRING             Volume;
  UNICODE_STRING             Share;
  UNICODE_STRING             Extension;
  UNICODE_STRING             Stream;
  UNICODE_STRING             FinalComponent;
  UNICODE_STRING             ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;

Member

Size

Größe der FLT_FILE_NAME_INFORMATION-Struktur in Byte.

NamesParsed

Bitmaske von Flags, die angeben, welche Namenskomponenten aus der Namenszeichenfolge von FltParseFileNameInformation analysiert wurden. Beachten Sie, dass FltParseFileNameInformation beim Analysieren der Namenszeichenfolge dieses Flag für jede Komponente festlegt, unabhängig davon, ob die Komponente in der Zeichenfolge vorhanden ist. Diese Werte können mithilfe des OR-Operators kombiniert werden.

Flag Komponente
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT FinalComponent
FLTFL_FILE_NAME_PARSED_EXTENSION Erweiterung
FLTFL_FILE_NAME_PARSED_STREAM Stream
FLTFL_FILE_NAME_PARSED_PARENT_DIR ParentDir

Format

Format der im Namenselement gespeicherten Namensinformationen. Dieser Member kann einer der folgenden Werte sein. (Eine Erläuterung dieser Formate finden Sie im folgenden Abschnitt "Hinweise".)

Wert Bedeutung
FLT_FILE_NAME_NORMALIZED Das Element Name enthält den normalisierten Namen für die Datei.
FLT_FILE_NAME_OPENED Das Element Name enthält den Namen, der beim Öffnen der Datei verwendet wurde. Diese Namenszeichenfolge ist nicht normalisiert.
FLT_FILE_NAME_SHORT Das Element Name enthält den kurzen Namen (8.3) für die Datei. Der Kurzname für eine Datei enthält nicht den Volumenamen, den Verzeichnispfad oder den Streamnamen. Diese Namenszeichenfolge ist nicht normalisiert.

Name

UNICODE_STRING Struktur, die die Dateinamenzeichenfolge enthält, formatiert, wie vom Format-Element angegeben.

Volume

UNICODE_STRING Struktur, die den Volumenamen enthält, der aus der Namenszeichenfolge analysiert wird. Wenn Format FLT_FILE_NAME_SHORT ist, ist Volume.Length null.

Share

UNICODE_STRING Struktur, die den Namen der Netzwerkfreigabe enthält, der aus der Namenszeichenfolge für eine Remotedatei analysiert wird. Wenn Format FLT_FILE_NAME_SHORT ist, ist Share.Length null.

Extension

UNICODE_STRING Struktur, die die Erweiterung enthält, die aus der Namenszeichenfolge analysiert wurde. Wenn keine Erweiterung gefunden wird, legt FltParseFileNameInformationExtension.Length auf null fest.

Stream

UNICODE_STRING Struktur, die den aus der Namenszeichenfolge analysierten Streamnamen enthält. Wenn kein Streamname gefunden wird oder Format FLT_FILE_NAME_SHORT ist, legt FltParseFileNameInformationStream fest. Länge bis 0 (null).

FinalComponent

UNICODE_STRING Struktur, die die endgültige Namenskomponente enthält, die aus der Name-Zeichenfolge analysiert wird. Wenn kein endgültiger Komponentenname gefunden wird oder Format FLT_FILE_NAME_SHORT ist, legt FltParseFileNameInformationFinalComponent.Length auf Null fest.

ParentDir

UNICODE_STRING Struktur, die den namen des übergeordneten Verzeichnisses enthält, der aus der Namenszeichenfolge von FltParseFileNameInformation analysiert wird. Wenn kein übergeordneter Verzeichnisname gefunden wird oder Format FLT_FILE_NAME_SHORT ist, legt FltParseFileNameInformationParentDir.Length auf Null fest.

Hinweise

Das Name-Element enthält eine der folgenden Elemente:

  • Der normalisierte Name für die Datei
  • Der geöffnete Name für die Datei
  • Der Kurzname für die Datei
Ein Dateiname gilt als normalisiert , wenn alle folgenden Bedingungen zutreffen:
  • Er enthält den vollständigen Verzeichnispfad für die Datei, einschließlich des Volumenamens, es sei denn, der Benutzer hat die Datei mit der Datei-ID geöffnet, verfügt aber nicht über Die Durchlaufberechtigung für den gesamten Pfad. (Weitere Informationen finden Sie unter FltGetFileNameInformation.)
  • Der Volumename ist der nicht permanente Geräteobjektname des Volumes (z. B. "\Device\HarddiskVolume1").
  • Alle Kurznamen werden auf die entsprechenden langen Namen erweitert.
  • Alle nachfolgenden Zeichenfolgen ":$DATA" oder "::$DATA" werden aus dem Streamnamen entfernt.
  • Alle Bereitstellungspunkte werden aufgelöst.
Im Folgenden finden Sie ein Beispiel für einen normalisierten Dateinamen für eine lokale Datei:
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Im Folgenden finden Sie ein Beispiel für einen normalisierten Dateinamen für eine Remotedatei:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Der geöffnete Name für eine Datei ist der Name, der beim Öffnen der Datei verwendet wurde. Wie der normalisierte Name enthält er den vollständigen Verzeichnispfad für die Datei, einschließlich des Volumenamens. Er unterscheidet sich vom normalisierten Namen auf folgende Weise:

  • Der Verzeichnispfad für die Datei kann sowohl Kurznamen als auch lange Namen enthalten.
  • Nachfolgende Zeichenfolgen ":$DATA" und "::$DATA" werden nicht aus dem Streamnamen entfernt.
  • Einbindungspunkte werden nicht aufgelöst.
Im Folgenden finden Sie ein Beispiel für einen geöffneten Dateinamen für eine lokale Datei:
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA

Im Folgenden finden Sie ein Beispiel für einen geöffneten Dateinamen für eine Remotedatei:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Der Kurzname für eine Datei ist der Kurzname (8.3) für die letzte Komponente des Dateinamens. Da er generiert wird, wenn die Datei geöffnet wird, ist der Kurzname für ein nicht geöffnetes Dateiobjekt nicht verfügbar und im Pfad zum Erstellen des Dispatchs ("pre-create") nicht verfügbar. Sie ist auch nicht für NTFS-Streamdateiobjekte verfügbar. Nicht alle geöffneten Dateien haben kurze Dateinamen. Auf NTFS-Partitionen, bei denen die Generierung kurzer Dateinamen deaktiviert wurde, weisen keine Dateien kurze Dateinamen auf.

Im Folgenden finden Sie ein Beispiel für einen Kurznamen für eine Datei:

TestRe~1.txt

Um eine FLT_FILE_NAME_INFORMATION-Struktur für eine Datei zu erhalten, rufen Sie FltGetFileNameInformation, FltGetFileNameInformationUnsafe oder FltGetDestinationFileNameInformation auf. Diese Routinen gibt einen Zeiger auf eine filter-manager-eigene FLT_FILE_NAME_INFORMATION-Struktur zurück, die von allen Minifiltern gemeinsam genutzt wird.

Hinweis Ändern Sie den Inhalt von FLT_FILE_NAME_INFORMATION Strukturen nicht, da diese Strukturen vom Filter-Manager zwischengespeichert werden, sodass sie von allen Minifiltern verwendet werden können. Wenn Ihr Minifilter diese Informationen in irgendeiner Weise ändern muss, sollte er die Informationen zuerst in einen anderen Puffer kopieren.
 
Dateisysteme wie NTFS und FAT verwenden einen Tunnelcache pro Volume, um Dateinamen und andere Metadaten für Dateien, die umbenannt, verknüpft oder gelöscht werden, kurz beizubehalten. Dieses Dateinamentunneling kann dazu führen, dass die letzte Komponente in normalisierten Dateinameninformationen, die durch einen Präoperationsaufruf von FltGetFileNameInformation, FltGetFileNameInformationUnsafe oder FltGetDestinationFileNameInformation zurückgegeben werden, ungültig wird. Wenn ein Minifilter normalisierte Dateinameninformationen in der PFLT_PRE_OPERATION_CALLBACK-Routine (Preoperation Callback) für einen Erstellungs-, Festverknüpfungs- oder Umbenennungsvorgang abruft, muss er FltGetTunneledName aus seiner Postoperation-Rückrufroutine (PFLT_POST_OPERATION_CALLBACK) aufrufen, um die richtigen Dateinameninformationen für die Datei abzurufen.

Obwohl es zahlreiche UNICODE_STRING-Strukturen enthält, belegt die FLT_FILE_NAME_INFORMATION-Struktur nicht viel Speicherplatz im Arbeitsspeicher, da alle UNICODE_STRING-Strukturen in einer FLT_FILE_NAME_INFORMATION-Struktur einen einzelnen Puffer verwenden.

Um den Inhalt der Namenszeichenfolge zu analysieren, rufen Sie FltParseFileNameInformation auf. Diese Routine legt die Werte der Member Extension, Stream, FinalComponent, ParentDir und NamesParsed dieser Struktur fest.

Minifilter sind dafür verantwortlich, FltReleaseFileNameInformation aufzurufen, um die FLT_FILE_NAME_INFORMATION-Struktur freizugeben, wenn sie nicht mehr benötigt wird.

Anforderungen

Anforderung Wert
Header fltkernel.h (fltkernel.h einschließen)

Weitere Informationen

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileName

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING