winapi : CreateFile - ÆÄÀÏÀ» ¿ÀÇÂÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¸Þ´º¾ó>winapi>CreateFile



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

CreateFile

ÆÄÀÏÀ̳ª ÀÔÃâ·Â ÀåÄ¡¸¦ ¿¬´Ù. ´ëÇ¥ÀûÀÎ ÀÔÃâ·Â ÀåÄ¡·Î´Â ÆÄÀÏ, ÆÄÀÏ ½ºÆ®¸², µð·ºÅ丮, ¹°¸®ÀûÀÎ µð½ºÅ©, º¼·ý, ÄÜ¼Ö ¹öÆÛ, Å×ÀÌºê µå¶óÀ̺ê, ÆÄÀÌÇÁ µîÀÌ ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â °¢ ÀåÄ¡¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Â handle(ÇÚµé)À» ¹ÝȯÇÑ´Ù.

»ç¿ë ¹ý

HANDLE WINAPI CreateFile( 
  __in      LPCTSTR lpFileName, 
  __in      DWORD dwDesiredAccess, 
  __in      DWORD dwShareMode, 
  __in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
  __in      DWORD dwCreationDisposition, 
  __in      DWORD dwFlagsAndAttributes, 
  __in_opt  HANDLE hTemplateFile 
); 
 

¸Å°³ º¯¼ö

  • lpfileName
    ¿­°íÀÚ ÇÏ´Â ÆÄÀÏ À̸§
  • dwDesiredAccess
    Á¢±Ù ¹æ¹ýÀ» ¸í½ÃÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. ÀϹÝÀûÀ¸·Î GENERIC_READ, GENERIC_WRITE ȤÀº GENERIC_READ|GENERIC_WRITE¸¦ »ç¿ëÇÑ´Ù. ¸¸¾à 0À» »ç¿ëÇϸé, ÀåÄ¡¸¦ Á÷Á¢ Á¢±ÙÇÏ´Â ´ë½Å ¼Ó¼ºÀ» ¾ò±âÀ§ÇÑ ¿äûÀ» ÇÑ´Ù.
  • dwShareMode
    °³Ã¼ÀÇ °øÀ¯ ¹æ½ÄÀ» ÁöÁ¤ÇÑ´Ù. 0À» ÁöÁ¤ÇÏ¸é °øÀ¯ÇÒ ¼ö ¾ø´Â »óŰ¡ µÇ°í, ÇÚµéÀÌ ´ÝÈ÷±â Àü±îÁö ´Ù¸¥ ¿­±â´Â ½ÇÆÐÇÏ°Ô µÈ´Ù.
    FILE_SHARE_DELETE »èÁ¦ Á¢±ÙÀ» ¿äûÇßÀ» ¶§, ¿¬¼ÓµÈ ¿­±â°¡ Çã¿ëµÈ´Ù.
    FILE_SHARE_READ Àбâ Á¢±ÙÀ» ¿äûÇßÀ» ¶§, ¿¬¼ÓµÈ ¿­±â°¡ Çã¿ëµÈ´Ù.
    FILE_SHARE_WRITE ¾²±â Á¢±ÙÀ» ¿äûÇßÀ» ¶§, ¿¬¼ÓµÈ ¿­±â°¡ Çã¿ëµÈ´Ù.
  • lpSecurityAttributes
  • dwCreationDisposion
    ÆÄÀÏÀÇ »ý¼º¹æ½ÄÀ» ¸í½ÃÇÑ´Ù.
    CREATE_NEW »õ·Î¿î ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
    CREATE_ALWAYS »õ·Î¿î ÆÄÀÏÀ» »ý¼ºÇÑ´Ù. µ¿ÀÏÇÑ À̸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇϸé, ÆÄÀÏÀ» µ¤¾î¾´´Ù.
    OPEN_EXISTING ÆÄÀÏÀÌ Á¸ÀçÇÏ¸é ¿¬´Ù. ¸¸¾à ÆÄÀÏÀ̳ª ÀåÄ¡°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¿¡·¯ ÄÚµå·Î ERROR_FILE_NOT_FOUND (2)¸¦ ¼³Á¤ÇÑ´Ù.
    TRUNCATE_EXISTING ÆÄÀÏÀÌ Á¸ÀçÇÏ¸é ¿¬´Ù. À̶§ ÆÄÀÏ Å©±â´Â 0ÀÌ µÈ´Ù. ¸¸¾à ÆÄÀÏÀ̳ª ÀåÄ¡°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ERROR_FILE_NOT_FOUD¸¦ ¼³Á¤ÇÑ´Ù.
  • dwFlagsAndAttributes
    ÆÄÀÏÀÇ ±âŸ ¼Ó¼ºÀ» ÁöÁ¤ÇÑ´Ù.
    FILE_ATTRIBUTE_ARCHIVE
    FILE_ATTRIBUTE_HIDDEN ¼û±è ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
    FILE_ATTRIBUTE_NORMAL ´Ù¸¥ ¼Ó¼ºÀ» °¡ÁöÁö ¾Ê´Â´Ù.
    FILE_ATTRIBUTE_OFFLINE
    FILE_ATTRIBUTE_READONLY Àбâ Àü¿ëÀÌ´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ ÆÄÀÏÀ» ÀÐÀ» ¼ö ÀÖÀ¸³ª ¾²°Å³ª »èÁ¦ÇÒ ¼ö ¾ø´Ù.
    FILE_ATTRIBUTE_SYSTEM ¿î¿µÃ¼Á¦ÀÇ ÀϺηΠ¹èŸÀûÀ¸·Î »ç¿ëÇÑ´Ù.
    FILE_ATTRIBUTE_TEMPORARY ÀÓ½ÃÀúÀåÀ» À§ÇØ »ç¿ëÇÑ´Ù.

    FILE_FLAG_BACKUP_SEMANTICS
    FILE_FLAG_DELETE_ON_CLOSE
    FILE_FLAG_NO_BUFFERING
    FILE_FLAG_OPEN_NO_RECALL
    FILE_FLAG_OPEN_REPARSE_POINT
    FILE_FLAG_OVERLAPPED
    FILE_FLAG_POSIX_SEMANTICS
    FILE_FLAG_RANDOM_ACCESS
    FILE_FLAG_SEQUENTIAL_SCAN
    FILE_FLAG_WRITE_THROUGH

    SECURITY_ANONYMOUS
    SECURITY_CONTEXT_TRACKING
    SECURITY_DELEGATION
    SECURITY_EFFECTIVE_ONLY
    SECURITY_IDENTIFICATION
    SECURITY_IMPERSONATIION
  • hTemplateFile

dwFlagAndAttributesÀÇ »ó¼¼ ³»¿ëÀº ±â¼úÇÏÁö ¾Ê¾Ò´Ù. (¹¹ÇÏÀÚ´Â °ªµéÀÎÁö ¸ô¶ó¼­)

¹Ýȯ °ª

¼º°øÇÏ¸é ÆÄÀÏ¿¡ ´ëÇÑ ÇÚµéÀ» ¹ÝȯÇÑ´Ù. ½ÇÆÐÇϸé INVALID_HANDLE_VALUE¸¦ ¹ÝȯÇÑ´Ù. ÀÚ¼¼ÇÑ ¿¡·¯ ÄÚµå´Â GetLastErrorÇÔ¼ö·Î °¡Á®¿Ã ¼ö ÀÖ´Ù.

»ó¼¼ ³»¿ë


¿¹Á¦

#include <stdio.h>   
#include <windows.h>   
#include <tchar.h> 
   
#define MAX_LINE 1024   
int main(int argc, char **argv)   
{   
    HANDLE fp;   
    DWORD readn;   
    BOOL brtv;   
    char buf[MAX_LINE]; 
   
    if (argc != 2)   
    {   
        printf("Usage : %s [file]\n", argv[0]);   
        return 1;   
    } 
   
    fp = CreateFile(   
        argv[1],    
        GENERIC_READ,   
        0,   
        NULL,   
        OPEN_EXISTING,   
        FILE_ATTRIBUTE_NORMAL,   
        NULL);   
    if (fp == INVALID_HANDLE_VALUE)   
    {   
        printf("File 1 Open Error (%d) : %s\n", GetLastError(), argv[1]);   
        return 1;   
    }   
   
    while(1)   
    {   
        memset((void *)buf, 0x00, MAX_LINE);  
        brtv = ReadFile(fp,buf, MAX_LINE-1, &readn, NULL);   
        if(brtv && readn == 0)   
        {   
            break;   
        }   
        printf("%s", buf);   
    }   
    return 1;   
}   
 


EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.