Freigeben über


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;

Angehörige

Size

Größe der FLT_FILE_NAME_INFORMATION Struktur in Byte.

NamesParsed

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

Flagge Bestandteil
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT FinalComponent-
FLTFL_FILE_NAME_PARSED_EXTENSION Erweiterungs-
FLTFL_FILE_NAME_PARSED_STREAM Stream-
FLTFL_FILE_NAME_PARSED_PARENT_DIR ParentDir-

Format

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

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

Name

UNICODE_STRING Struktur, die die Dateinamenzeichenfolge enthält, die gemäß der Angabe durch das element Format formatiert ist.

Volume

UNICODE_STRING Struktur, die den volumenamen enthält, der aus der Name Zeichenfolge analysiert wird. Wenn Format- FLT_FILE_NAME_SHORT ist, ist Volume.Length Null.

Share

UNICODE_STRING Struktur, die den Netzwerkfreigabenamen enthält, der aus der Name Zeichenfolge für eine Remotedatei analysiert wird. Wenn Format- FLT_FILE_NAME_SHORT ist, ist "Share.Length"- null.

Extension

UNICODE_STRING Struktur, die die aus der Name Zeichenfolge analysierte Erweiterung enthält. Wenn keine Erweiterung gefunden wird, legt FltParseFileNameInformationExtension.Length auf Null fest.

Stream

UNICODE_STRING Struktur, die den datenstromnamen enthält, der aus der Name Zeichenfolge analysiert wird. Wenn kein Datenstromname gefunden wird oder Format- FLT_FILE_NAME_SHORT ist, legt FltParseFileNameInformation"Stream.Length" auf Null fest.

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 übergeordneten Verzeichnisnamen enthält, der aus der Name Zeichenfolge durch FltParseFileNameInformationanalysiert wird. Wenn kein übergeordneter Verzeichnisname gefunden wird oder Format- FLT_FILE_NAME_SHORT ist, legt FltParseFileNameInformationParentDir.Length auf Null fest.

Bemerkungen

Das element Name enthält einen 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 wird als normalisierte betrachtet, wenn alle folgenden Werte zutreffen:
  • Er enthält den vollständigen Verzeichnispfad für die Datei, einschließlich des Volumenamens, es sei denn, der Benutzer hat die Datei anhand der Datei-ID geöffnet, besitzt jedoch keine Traverseberechtigung für den gesamten Pfad. (Weitere Informationen finden Sie unter FltGetFileNameInformation.)
  • Der Volumename ist der nichtpersistent 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 Datenstromnamen entfernt.
  • Alle Bereitstellungspunkte werden aufgelöst.
Nachfolgend sehen 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

Nachfolgend sehen 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 von dem normalisierten Namen auf folgende Weise:

  • Der Verzeichnispfad für die Datei kann kurze Namen sowie lange Namen enthalten.
  • Nachfolgende Zeichenfolgen ":$DATA" und "::$DATA" werden nicht aus dem Datenstromnamen entfernt.
  • Mount points are not resolved.
Im Folgenden sehen 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

Nachfolgend sehen 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 kurze Name (8.3) für die endgültige Komponente des Dateinamens. Da sie generiert wird, wenn die Datei geöffnet wird, steht der Kurzname für ein nicht geöffnetes Dateiobjekt nicht zur Verfügung und ist nicht im Create Dispatch -Pfad ("pre-create") verfügbar. Es ist auch nicht für NTFS-Streamdateiobjekte verfügbar. Nicht alle geöffneten Dateien haben kurze Dateinamen. Beispielsweise verfügen bei NTFS-Partitionen, bei denen die Generierung kurzer Dateinamen deaktiviert wurde, keine Dateien über kurze Dateinamen.

Nachfolgend sehen Sie ein Beispiel für einen kurzen Namen für eine Datei:

TestRe~1.txt

Um eine FLT_FILE_NAME_INFORMATION Struktur für eine Datei abzurufen, rufen Sie FltGetFileNameInformation, FltGetFileNameInformationUnsafeoder FltGetDestinationFileNameInformationauf. Diese Routinen gibt einen Zeiger auf eine im Filter-Manager befindliche FLT_FILE_NAME_INFORMATION Struktur zurück, die von allen Minifiltern gemeinsam verwendet wird.

Hinweis Den Inhalt von FLT_FILE_NAME_INFORMATION Strukturen nicht ändern, da diese Strukturen vom Filter-Manager zwischengespeichert werden, damit alle Minifilter sie verwenden können. Wenn Der Minifilter diese Informationen auf irgendeine Weise ändern muss, sollte er zuerst die Informationen in einen anderen Puffer kopieren.
 
Dateisysteme wie NTFS und FAT verwenden einen Cache pro Volume, um Dateinamen und andere Metadaten für Dateien, die umbenannt, verknüpft oder gelöscht werden, kurz beizubehalten. Diese Dateinamentunnelung kann dazu führen, dass die letzte Komponente in normalisierten Dateinameninformationen, die von einem Voraboperationsaufruf an FltGetFileNameInformation, FltGetFileNameInformationUnsafeoder FltGetDestinationFileNameInformation ungültig werden. Wenn ein Minifilter normalisierte Dateinameninformationen in der Preoperation-Rückrufroutine (PFLT_PRE_OPERATION_CALLBACK) für einen Erstellungs-, Hardlink- oder Umbenennungsvorgang abruft, muss er FltGetTunneledName aus der Postoperation-Rückrufroutine (PFLT_POST_OPERATION_CALLBACK) aufrufen, um die richtigen Dateinameninformationen für die Datei abzurufen.

Obwohl sie 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 teilen.

Um den Inhalt der Name Zeichenfolge zu analysieren, rufen Sie FltParseFileNameInformationauf. Diese Routine legt die Werte der Extension, Stream, FinalComponent, ParentDirund NamesParsed Member dieser Struktur fest.

Minifilter sind für das Aufrufen von FltReleaseFileNameInformation verantwortlich, um die FLT_FILE_NAME_INFORMATION Struktur freizugeben, wenn sie nicht mehr benötigt wird.

Anforderungen

Anforderung Wert
Header- fltkernel.h (include Fltkernel.h)

Siehe auch

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe-

FltGetTunneledName

FltParseFileName-

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING