Streamek használata
A jelen témakörben szereplő példa bemutatja, hogyan használhatók az alapszintű NTFS fájlrendszer-adatfolyamok.
Ez a példa létrehoz egy "TestFile" nevű fájlt, amelynek mérete 16 bájt. A fájl azonban további ::$DATA streamtípussal is rendelkezik, "Stream" néven, amely további 23 bájtot ad hozzá, amelyet az operációs rendszer nem jelent. Ezért a fájl fájlméret tulajdonságának megtekintésekor csak a fájl alapértelmezett ::$DATA streamjének mérete jelenik meg.
#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;
}
}
Ha egy parancssorba írja be TestFile típust, a következő kimenet jelenik meg:
This is TestFile
Ha azonban beírja a Type TestFile:Streamszöveget, az a következő hibát eredményezi:
"A fájlnév, a könyvtárnév vagy a kötetcímke szintaxisa helytelen."
A TestFile:streamben található adatok megtekintéséhez használja az alábbi parancsok egyikét:
További < TestFile:Stream
További < TestFile:Stream:$DATA
A megjelenített szöveg a következő:
This is TestFile:Stream
Kapcsolódó témakörök