Usando fluxos
O exemplo neste tópico demonstra como usar fluxos básicos do sistema de arquivos NTFS.
Este exemplo cria um arquivo, chamado "TestFile", com um tamanho de 16 bytes. No entanto, o arquivo também tem um tipo de fluxo ::$DATA adicional, chamado "Stream", que adiciona 23 bytes adicionais que não são relatados pelo sistema operacional. Portanto, ao exibir a propriedade de tamanho do arquivo, você verá apenas o tamanho do fluxo padrão ::$DATA para o arquivo.
#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;
}
}
Se você digitar Type TestFile em um prompt de comando, ele exibirá a seguinte saída:
This is TestFile
No entanto, se você digitar as palavras Tipo TestFile:Stream, ele gerará o seguinte erro:
"O nome do arquivo, o nome do diretório ou a sintaxe do rótulo de volume estão incorretos."
Para exibir o que está em TestFile:stream, use um dos seguintes comandos:
Mais < TestFile:Stream
Mais < TestFile:Stream:$DATA
O texto exibido é o seguinte:
This is TestFile:Stream
Tópicos relacionados