winapi : WriteFile - ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ¾´´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

WriteFile

Ư¼ö ÆÄÀÏ È¤Àº ÀÔÃâ·Â ÀåÄ¡¿¡ µ¥ÀÌÅ͸¦ ¾´´Ù.

ÀÌ ÇÔ¼ö´Â µ¿±â,ºñµ¿±â ¸ðµÎ¿¡ ¾µ ¼ö ÀÖ´Ù. ÀÌ¿Í ºñ½ÁÇÑ ÇÔ¼ö·Î ºñµ¿±â¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â WriteFileExÇÔ¼ö°¡ ÀÖ´Ù.

»ç¿ë ¹ý

BOOL WINAPI WriteFile( 
  __in         HANDLE hFile, 
  __in         LPCVOID lpBuffer, 
  __in         DWORD nNumberOfBytesToWrite, 
  __out_opt    LPDWORD lpNumberOfBytesWritten, 
  __inout_opt  LPOVERLAPPED lpOverlapped 
); 
 

¸Å°³ º¯¼ö

  • hFile
    ÆÄÀÏ, ÆÄÀÏ ½ºÆ®¸², ¹°¸®ÀûÀÎ µð½ºÅ©, ÄÜ¼Ö ¹öÆÛ, Å×ÀÌÇÁ µå¶óÀ̹ö, ¼ÒÄÏ, ÆÄÀÌÇÁ¿Í °°Àº ÆÄÀÏÀÇ Çڵ鷯
  • lpBuffer
    ÆÄÀÏ¿¡ ¾µ µ¥ÀÌÅ͸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ
  • nNumberOfBytestoWrite
    ÆÄÀÏ¿¡ ¾µ µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® Å©±â.
  • lpNumberOfBytesWrite
    hFileÀÌ µ¿±âÀÔÃâ·ÂÀ» À§ÇÑ Çڵ鷯ÀÏ °æ¿ì, ½ÇÁ¦ Àü¼ÛÇÑ ¹ÙÀÌÆ®ÀÇ Å©±â´Ù. 0ÀÌ¸é ¿¡·¯°¡ ¹ß»ýÇßÀ½À» ÀǹÌÇÑ´Ù.
  • lpOverlapped
    hFileÀÌ FILE_FLAG_OVERLAPPED·Î ¿­¸° Çڵ鷯¶ó¸é OVERLAPPED±¸Á¶Ã¼ Æ÷ÀÎÅ͸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì NULLÀ» ³Ñ±ä´Ù.

¹Ýȯ °ª

¼º°øÇß´Ù¸é TRUE¸¦ ¹ÝȯÇÑ´Ù.

ºñµ¿±â ÀÔÃâ·ÁÀ̰ųª ÇÔ¼ö°¡ ½ÇÆÐÇß´Ù¸é 0 (FALSE)À» ¹ÝȯÇÑ´Ù. ÀÚ¼¼ÇÑ ¿¡·¯ ÄÚµå´Â GetLastErrorÇÔ¼öÀÇ ¹Ýȯ °ªÀ» °Ë»çÇÑ´Ù.

GetLastError Äڵ尡 ERROR_IO_PENDINGÀ̸é ÇÔ¼ö ½ÇÆÐ°¡ ¾Æ´Ï´Ù. ÀÌ´Â ºñµ¿±â ÀÔÃâ·Â¿¡ ÀÇÇÑ ¹ÝȯÀ» ÀǹÌÇÑ´Ù.

¿¹Á¦

ÆÄÀÏ º¹»ç ÇÁ·Î±×·¥. source fileÀ» dest file·Î º¹»çÇÑ´Ù.
#include <windows.h> 
#include <stdio.h> 
 
#define MAX_LINE 1024 
 
int main(int argc, char **argv) 
{ 
    char buf[MAX_LINE]; 
    HANDLE source_fh,dest_fh; 
    int readn, writen; 
    if (argc != 3) 
    { 
        printf("Usge : %s [source file] [dest file]\n", argv[0]); 
        return 0; 
    } 
 
    source_fh= CreateFile( 
        argv[1], 
        GENERIC_READ, 
        0, 
        NULL, 
        OPEN_EXISTING, 
        FILE_ATTRIBUTE_NORMAL, 
        NULL 
        ); 
    if(source_fh == INVALID_HANDLE_VALUE) 
    { 
        printf("FILE Open Error %d\n", GetLastError); 
        return 1; 
    } 
    dest_fh = CreateFile( 
        argv[2], 
        GENERIC_WRITE, 
        0, 
        NULL, 
        CREATE_NEW, 
        FILE_ATTRIBUTE_NORMAL, 
        NULL 
        ); 
    if (dest_fh == INVALID_HANDLE_VALUE) 
    { 
        if (GetLastError() == ERROR_FILE_EXISTS)  
            printf("Dest File Already exists\n"); 
        else  
            printf("Dest File Open Error\n"); 
        return 1; 
    } 
     
 
    while(1) 
    { 
        memset(buf, 0x00, MAX_LINE); 
        ReadFile(source_fh, buf, MAX_LINE-1, &readn, NULL); 
        if(readn <= 0) 
            break; 
        WriteFile(dest_fh, buf, readn, &writen, NULL); 
        printf("%d\n", writen); 
    } 
    return 0; 
} 
 


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