Использование потоков
В примере в этом разделе показано, как использовать базовые потоки файловой системы NTFS.
В этом примере создается файл с именем TestFile размером 16 байт. Однако файл также имеет дополнительный тип потока ::$DATA с именем Stream, который добавляет дополнительные 23 байта, о которых операционная система не сообщает. Таким образом, при просмотре свойства размера файла отображается только размер потока по умолчанию ::$DATA для файла.
#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;
}
}
Если в командной строке ввести type TestFile , отобразится следующий результат:
This is TestFile
Однако при вводе слов Type TestFile:Stream возникает следующая ошибка:
"Неправильный синтаксис имени файла, имени каталога или метки тома".
Чтобы просмотреть содержимое в TestFile:stream, используйте одну из следующих команд:
Дополнительные < сведения TestFile:Stream
Дополнительные < сведения TestFile:Stream:$DATA
Отображаемый текст выглядит следующим образом:
This is TestFile:Stream
Связанные темы