Dateistreams (lokale Dateisysteme)
Ein Datenstrom ist eine Folge von Bytes. Im NTFS-Dateisystem enthalten Datenströme die Daten, die in eine Datei geschrieben werden und mehr Informationen zu einer Datei als Attribute und Eigenschaften enthalten. Sie können z. B. einen Datenstrom erstellen, der Suchstichwörter enthält, oder die Identität des Benutzerkontos, das eine Datei erstellt.
Jeder Datenstrom, der einer Datei zugeordnet ist, verfügt über eine eigene Zuordnungsgröße, tatsächliche Größe und gültige Datenlänge:
- Die Zuordnungsgröße ist der Speicherplatz, der für einen Datenstrom reserviert ist.
- Die tatsächliche Größe ist die Anzahl der Bytes, die von einem Aufrufer verwendet werden.
- Die gültige Datenlänge (VDL) ist die Anzahl der Bytes, die aus der Zuordnungsgröße für den Datenstrom initialisiert werden.
Jeder Datenstrom behält auch einen eigenen Zustand für Komprimierung, Verschlüsselung und Geringes bei. Das FILE_ATTRIBUTE_SPARSE_FILE-Attribut für die Datei wird im dwFileAttributes Member der WIN32_FIND_DATA Struktur festgelegt, die von der FindFirstFile-, FindFirstFileEx-und FindNextFile- Funktionen zurückgegeben wird, wenn einer der Datenströme jemals spärlich war. GetFileAttributes, GetFileAttributesEx, GetFileAttributesTransacted, GetFileInformationByHandle, und GetFileInformationByHandleEx geben den sparse Status des Standarddatenstroms zurück, wenn kein Datenstrom angegeben ist.
Einem Datenstrom sind keine Dateizeiten zugeordnet. Die Dateizeiten für eine Datei werden aktualisiert, wenn ein Datenstrom in einer Datei aktualisiert wird.
Opportunistische Sperren werden pro Datenstrom verwaltet. Freigabemodi werden auch pro Datenstrom verwaltet. Wenn der Zugriff auf eine Datei gelöscht wird, überprüft das Betriebssystem den Löschzugriff auf alle geöffneten Datenströme in einer Datei. Wenn ein anderer Prozess einen Datenstrom ohne die FILE_SHARE_DELETE Berechtigung geöffnet hat, können Sie die Datei nicht für den Löschzugriff öffnen.
Wenn eine kopierte Datei über einen Datenstrom verfügt und der Netzwerkumleitungsmodul verwendet wird, kann die Datei nur kopiert werden, wenn der Client sowohl über die Leseberechtigung als auch über die Berechtigung zum Lesen von Attributen verfügt.
Benennungskonventionen für Streams
Wenn in der Befehlszeile der Windows-Shell angegeben, lautet der vollständige Name eines Datenstroms "Dateinamen:Streamname:Streamtyp", wie im folgenden Beispiel: "myfile.dat:stream1:$DATA".
Alle Für einen Dateinamen zulässigen Zeichen sind auch für den Datenstromnamen zulässig, einschließlich Leerzeichen. Weitere Informationen finden Sie unter Benennen einer Datei. Der Datenstromtyp (auch als Attributtypcode bezeichnet) ist intern im NTFS-Dateisystem. Benutzer können daher keine neuen Streamtypen erstellen, aber sie können vorhandene NTFS-Dateisystemtypen öffnen. Datenstromtypbezeichnerwerte beginnen immer mit dem Dollarzeichen ($) Symbol. Eine Liste der Datenstromtypen finden Sie unten.
Standardmäßig ist der Standarddatenstrom unbenannt. Um den Standarddatenstrom vollständig anzugeben, verwenden Sie "Dateinamen::$DATA", wobei $DATA der Datenstromtyp ist. Dies entspricht "Dateinamen". Sie können einen benannten Datenstrom in der Datei mithilfe der Namenskonventionen für Dateienerstellen. Beachten Sie, dass "$DATA" ein rechtlicher Datenstromname ist. Beispielsweise würde der vollständige Name eines Datenstroms mit dem Namen "$DATA" in einer Datei mit dem Namen "Beispiel" "Beispiel:$DATA:$DATA" sein. Wenn Sie in derselben Datei einen Datenstrom namens "bar" erstellt haben, lautet der vollständige Name "Beispiel:bar:$DATA".
Wenn Sie Dateien mit einstelligen Namen erstellen und verwenden, stellen Sie dem Dateinamen einen Punkt voran, gefolgt von einem umgekehrten Schrägstrich (.) oder verwenden Sie einen vollqualifizierten Pfadnamen. Der Grund hierfür ist, dass Windows Dateinamen mit einem Zeichen als Laufwerkbuchstaben behandelt. Wenn ein Laufwerkbuchstaben mit einem relativen Pfad angegeben wird, trennt ein Doppelpunkt den Laufwerkbuchstaben vom Pfad. Wenn es eine Mehrdeutigkeit gibt, ob ein Einzeichenname ein Laufwerkbuchstabe oder ein Dateiname ist, geht Windows davon aus, dass es sich um einen Laufwerkbuchstaben handelt, wenn die Zeichenfolge nach dem Doppelpunkt ein gültiger Pfad ist, auch wenn der Laufwerkbuchstaben ungültig ist.
Streamtypen
Nachfolgend finden Sie die Liste der NTFS-Streamtypen, die auch attributtypcodes genannt werden. Einige der Datenstromtypen sind intern in NTFS, und ihr Format ist nicht dokumentiert.
Streamtyp | Beschreibung |
---|---|
::$ATTRIBUTE_LIST | Enthält eine Liste aller Attribute, aus denen die Datei besteht, und gibt an, wo sich jedes Attribut befindet. |
::$BITMAP | Eine Bitmap, die von Indizes verwendet wird, um den freien Speicherplatz der b-Struktur für ein Verzeichnis zu verwalten. Die b-Struktur wird in 4 KB-Blöcken verwaltet (unabhängig von der Clustergröße), und dies wird verwendet, um die Zuordnung dieser Blöcke zu verwalten. Dieser Datenstromtyp ist in jedem Verzeichnis vorhanden. |
::$DATA | Datenstrom. Der Standarddatenstrom hat keinen Namen. Datenströme können mithilfe der funktionen FindFirstStreamW und FindNextStreamW aufgezählt werden. |
::$EA | Enthält Daten zu erweiterten Attributen. |
::$EA_INFORMATION | Enthält Supportinformationen zu den erweiterten Attributen. |
::$FILE_NAME | Der Name der Datei in Unicode-Zeichen. Dies schließt den Kurznamen der Datei sowie alle hardlinks ein. |
::$INDEX_ALLOCATION | Der Streamtyp eines Verzeichnisses. Wird verwendet, um die Dateinamenzuweisung für große Verzeichnisse zu implementieren. Dieser Datenstrom stellt das Verzeichnis selbst dar und enthält alle Daten des Verzeichnisses. Änderungen an Datenströmen dieses Typs werden im NTFS-Änderungsjournal protokolliert. Der Standarddatenstromname eines $INDEX_ALLOCATION-Datenstromtyps ist $I 30, sodass "DirName", "DirName::$INDEX_ALLOCATION" und "DirName:$I 30:$INDEX_ALLOCATION" alle gleichwertig sind. |
::$INDEX_ROOT | Dieser Datenstrom stellt die Stammstruktur eines Indexes dar. Dieser Datenstromtyp ist in jedem Verzeichnis vorhanden. |
::$LOGGED_UTILITY_STREAM | Ähnlich wie ::$DATA werden jedoch Vorgänge im NTFS-Änderungsjournal protokolliert. Wird von EFS und Transactional NTFS (TxF)verwendet. Das Paar ":StreamName:$StreamType" für EFS lautet ":$EFS:$LOGGED_UTILITY_STREAM" und für TxF lautet ":$TXF_DATA:$LOGGED_UTILITY_STREAM". |
::$OBJECT_ID | Eine 16-Byte-ID, die verwendet wird, um die Datei für den Linkverfolgungsdienst zu identifizieren. |
::$REPARSE_POINT | Der Analysepunkt Daten. |
Verwandte Themen