Menggunakan Stream
Contoh dalam topik ini menunjukkan cara menggunakan aliran sistem file NTFS dasar.
Contoh ini membuat file, yang disebut "TestFile," dengan ukuran 16 byte. Namun, file juga memiliki jenis aliran ::$DATA tambahan, bernama "Stream" yang menambahkan 23 byte tambahan yang tidak dilaporkan oleh sistem operasi. Oleh karena itu, saat Anda melihat properti ukuran file untuk file, Anda hanya melihat ukuran default ::$DATA stream untuk file.
#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;
}
}
Jika Anda mengetik Ketik TestFile pada prompt perintah, perintah akan menampilkan output berikut:
This is TestFile
Namun, jika Anda mengetik kata Ketik TestFile:Stream, itu menghasilkan kesalahan berikut:
"Sintaks nama file, nama direktori, atau label volume salah."
Untuk melihat apa yang ada di TestFile:stream, gunakan salah satu perintah berikut:
TestFile Lainnya < :Stream
TestFile Lainnya < :Stream:$DATA
Teks yang ditampilkan adalah sebagai berikut:
This is TestFile:Stream
Topik terkait