Verwenden von Streams
Das Beispiel in diesem Thema veranschaulicht die Verwendung grundlegender NTFS-Dateisystemdatenströme.
In diesem Beispiel wird eine Datei namens "TestFile" mit einer Größe von 16 Bytes erstellt. Die Datei verfügt jedoch auch über einen zusätzlichen ::$DATA-Streamtyp namens "Stream", der zusätzliche 23 Bytes hinzufügt, die vom Betriebssystem nicht gemeldet werden. Wenn Sie die Dateigrößeneigenschaft für die Datei anzeigen, wird daher nur die Größe des Standarddatenstroms "::$DATA" für die Datei angezeigt.
#include <windows.h>
#include <stdio.h>
void main( )
{
HANDLE hFile, hStream;
DWORD dwRet;
hFile = CreateFile( TEXT("TestFile"), // Filename
GENERIC_WRITE, // Desired access
FILE_SHARE_WRITE, // Share flags
NULL, // Security Attributes
OPEN_ALWAYS, // Creation Disposition
0, // Flags and Attributes
NULL ); // OVERLAPPED pointer
if( hFile == INVALID_HANDLE_VALUE )
{
printf( "Cannot open TestFile\n" );
return;
}
else
{
WriteFile( hFile, // Handle
"This is TestFile", // Data to be written
16, // Size of data, in bytes
&dwRet, // Number of bytes written
NULL ); // OVERLAPPED pointer
CloseHandle( hFile );
hFile = INVALID_HANDLE_VALUE;
}
hStream = CreateFile( TEXT("TestFile:Stream"), // Filename
GENERIC_WRITE, // Desired access
FILE_SHARE_WRITE, // Share flags
NULL, // Security Attributes
OPEN_ALWAYS, // Creation Disposition
0, // Flags and Attributes
NULL ); // OVERLAPPED pointer
if( hStream == INVALID_HANDLE_VALUE )
printf( "Cannot open TestFile:Stream\n" );
else
{
WriteFile( hStream, // Handle
"This is TestFile:Stream", // Data to be written
23, // Size of data
&dwRet, // Number of bytes written
NULL); // OVERLAPPED pointer
CloseHandle( hStream );
hStream = INVALID_HANDLE_VALUE;
}
}
Wenn Sie Typ TestFile an einer Eingabeaufforderung eingeben, wird die folgende Ausgabe angezeigt:
This is TestFile
Wenn Sie jedoch die Wörter Type TestFile:Stream eingeben, wird der folgende Fehler generiert:
"Die Syntax für Dateiname, Verzeichnisname oder Volumebezeichnung ist falsch."
Verwenden Sie einen der folgenden Befehle, um anzuzeigen, was sich in TestFile:stream befindet:
Weitere < TestFile:Stream
Weitere < TestFile:Stream:$DATA
Der angezeigte Text lautet wie folgt:
This is TestFile:Stream
Zugehörige Themen