스트림 사용

이 항목의 예제는 기본 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

파일 스트림