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
- 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.
\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.
\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.
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
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe