FILE_STREAM_INFORMATION Struktur (ntifs.h)
Die FILE_STREAM_INFORMATION Struktur wird zum Aufzählen der Datenströme für eine Datei verwendet.
Syntax
typedef struct _FILE_STREAM_INFORMATION {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER StreamSize;
LARGE_INTEGER StreamAllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
Angehörige
NextEntryOffset
Der Offset des nächsten FILE_STREAM_INFORMATION Eintrags. Dieses Element ist null, wenn keine anderen Einträge diesem Element folgen.
StreamNameLength
Länge der StreamName- Zeichenfolge in Byte.
StreamSize
Größe des Datenstroms in Bytes.
StreamAllocationSize
Größe der Dateidatenstromzuordnung in Byte. Normalerweise ist dieser Wert ein Vielfaches des Sektors oder der Clustergröße des zugrunde liegenden physischen Geräts.
StreamName[1]
Unicode-Zeichenfolge, die den Namen des Datenstroms enthält.
Bemerkungen
Die FILE_STREAM_INFORMATION-Struktur wird zum Aufzählen der Datenströme für eine Datei verwendet. Dieser Vorgang kann auf eine der folgenden Arten ausgeführt werden:
Durch Aufrufen FltQueryInformationFile oder ZwQueryInformationFile und Angeben von FileStreamInformation für den parameter FileInformationClass. Beim Zurückgeben enthält der FileInformation Puffer eine FILE_STREAM_INFORMATION Struktur für jeden Dateidatenstrom.
Durch Senden einer IRP_MJ_QUERY_INFORMATION Anforderung an das Dateisystem und Angeben von FileStreamInformation für den parameter FileInformationClass. Bei Rückgabe enthält Irp->AssociatedIrp.SystemBuffer eine FILE_STREAM_INFORMATION Struktur für jeden Dateidatenstrom.
Zum Abfragen dieser Informationen sind keine spezifischen Zugriffsrechte erforderlich. Daher sind diese Informationen verfügbar, solange die Datei geöffnet ist.
Die Unterstützung für die Streamenumeration ist vom Dateisystem abhängig. Wenn ein Dateisystem die Streamenumeration nicht unterstützt, sollte es STATUS_INVALID_PARAMETER oder STATUS_NOT_IMPLEMENTED für diese Anforderungen zurückgeben.
Wenn ein Dateisystem die Streamenumeration unterstützt, die Datei jedoch keine Datenströme enthält, die nicht den Standarddatenstrom aufweisen, der nicht benannt ist, sollte das Dateisystem eine einzelne FILE_STREAM_INFORMATION Struktur zurückgeben, die entweder "::$DATA" oder eine Unicode-Zeichenfolge der Länge null als StreamName-enthält.
NTFS gibt "::$DATA" als StreamName- für den Standarddatenstrom zurück.
Bei einem benannten Datenstrom fügt NTFS ":$DATA" an den Datenstromnamen an. Für einen Benutzerdatenstrom mit dem Namen "Authors" gibt NTFS beispielsweise ":Authors:$DATA" als StreamName-zurück.
Beim Aufrufen einer Routine wie ZwCreateFile- zum Öffnen eines benannten Dateidatenstroms kann der Teil ":$DATA" des Namens weggelassen werden. Um beispielsweise den "Authors"-Stream einer Datei namens "Book" zu öffnen, kann der Aufrufer "Book:Authors" oder "Book:Authors:$DATA" als Datenstromnamen angeben. Beide Namen sind gleichwertig.
Die Größe des Puffers, der im parameter FileInformation an FltQueryInformationFile oder ZwQueryInformation File übergeben wird, muss mindestens Sizeof (FILE_STREAM_INFORMATION) sein. Wenn dieser Puffer nicht groß genug ist, um eine FILE_STREAM_INFORMATION Struktur für jeden Dateidatenstrom zu speichern, gibt FltQueryInformationFile oder ZwQueryInformationFile STATUS_BUFFER_OVERFLOW oder STATUS_BUFFER_TOO_SMALL zurück. Da ein solcher nicht erfolgreicher Aufruf von FltQueryInformationFile oder ZwQueryInformationFile nicht die erforderliche Puffergröße zurückgibt, müssen Filtertreiber einen oder mehrere zusätzliche Aufrufe an FltQueryInformationFile oder ZwQueryInformationFileausführen, um einen größeren Puffer in jedem Aufruf zu übergeben, bis der Puffer groß genug ist.
Die Unterstützung für benannte Datenströme ist dateisystemspezifisch. Dateisystemfiltertreiber können ermitteln, ob ein Dateisystem benannte Datenströme auf eine der folgenden Arten unterstützt:
Durch Aufrufen FltQueryVolumeInformation oder ZwQueryVolumeInformationFile und Angeben von FileFsAttributeInformation für den FsInformationClass Parameter. Beim Zurückgeben enthält der FsInformation Puffer eine FILE_FS_ATTRIBUTE_INFORMATION Struktur. Wenn das FILE_NAMED_STREAMS Bit im FileSystemAttributes Mitglied dieser Struktur festgelegt ist, unterstützt das Dateisystem benannte Datenströme.
Durch Senden einer IRP_MJ_QUERY_VOLUME_INFORMATION Anforderung an das Dateisystem und Angeben von FileFsAttributeInformation für den FsInformationClass Parameter. Bei Rückgabe enthält Irp->AssociatedIrp.SystemBuffer- eine FILE_FS_ATTRIBUTE_INFORMATION Struktur. Wenn das FILE_NAMED_STREAMS Bit im FileSystemAttributes Mitglied dieser Struktur festgelegt ist, unterstützt das Dateisystem benannte Datenströme.
Die FILE_STREAM_INFORMATION Struktur muss an einer LONGLONG-Grenze (8 Byte) ausgerichtet werden. Wenn ein Puffer zwei oder mehr dieser Strukturen enthält, fällt der NextEntryOffset Wert in jedem Eintrag, mit Ausnahme der letzten, auf eine Grenze von 8 Byte.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ntifs.h (einschließlich Ntifs.h, Fltkernel.h) |