스트림 사용
이 항목의 예제는 기본 NTFS 파일 시스템 스트림을 사용하는 방법을 보여줍니다.
이 예제에서는 크기가 16바이트인 "TestFile"이라는 파일을 만듭니다. 그러나 이 파일에는 운영 체제에서 보고하지 않는 23바이트를 더 추가하는 "Stream"이라는 추가 ::$DATA 스트림 형식도 있습니다. 따라서 파일의 파일 크기 속성을 보면 파일에 대한 기본 ::$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
그러나 TestFile:Stream 형식이라는 단어를 입력하면 다음 오류가 발생합니다.
파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다.
TestFile:stream에 있는 내용을 보려면 다음 명령 중 하나를 사용합니다.
기타 < TestFile:Stream
기타 < TestFile:Stream:$DATA
표시되는 텍스트는 다음과 같습니다.
This is TestFile:Stream
관련 항목