1. CreateFile( ) 

// 파일 생성, 열기 


* 함수의 원형


HANDLE CreateFile(

LPCTSTR lpFileName, 

DWORD dwDesiredAccess, 

DWORD dwShareMode, 

LPSECURITY_ATTRIBUTES lpSecurityAttributes,  

DWORD dwCreationDisposition, 

DWORD dwFlagsAndAttributes,  

HANDLE hTemplateFile 

);



1) LPCTSTR lpFileName

// 생성하고자 하는 파일명, 파일의 절대경로를 나타냄. 또, 'COM1'이라 쓰면 COM1포트 개방.


2) DWORD dwDesiredAccess 

// 파일의 접근 권한 지정 (0, GENERIC_READ, GENERIC_WRITE)

  읽고 싶은지 쓰고 싶은지 아니면 둘다인지


3) DWORD dwShareMode

 // 파일의 공유 모드 지정 (FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE, 0)

    내가 열어서 사용하고 있는데 딴 놈이 접근하면 어떻게 하지? 아무도 열지 못하게 할 수도, 읽기만 허용, 

    쓰기 허용, 삭제 허용  


4) DWORD dwCreationDisposition

// 파일을 생성할 것인지 열 것인지 지정, 만들지 열지 

 CREATE_NEW : 파일을 새로 만든다. 기존에 파일이 있다면 에러를 반환. 

 CREATE_ALWAYS : 항상 파일을 새로 만든다. 기존에 파일이 있다면 덮어쓰기.

 OPEN_EXISTING : 기존 파일을 연다. 만약 열려있는 파일이 없다면 에러를 반환

 OPEN_ALWAYS : 파일을 연다. 열려는 파일이 없는 경우에는 직접 파일을 생성하여 파일을 열기.


5) LPSECURITY_ATTRIBUTES lpSecurityAttributes

// 파일의 보안 속성을 지정하는 구조체 포인터 

    자식한테 상속할까? 상속할 마음 없으면 그냥 NULL하자. 


6) DWORD dwCreationDisposition

// 파일을 생성할 것인지 열 것인지 지정.


 7) DWORD dwFlagsAndAttributes

 //생성할 파일의 속성 또는 기타 객체의 속성을 지정.

  FILE_ATTRUBUTE_ARCHIVE : 쓰기 속성으로 생성.

  FILE_ATTRUBUTE_ENCRYPTED : 파일을 암호화하여 생성.

  FILE_ATTRUBUTE_HIDDEN : 숨김 파일로 생성.

  FILE_ATTRUBUTE_NORMAL : 아무런 속성도 없는 파일을 생성.

  FILE_ATTRUBUTE_NOT_CONTENT_INDEXED : 콘텐츠 인덱싱 서비스에 대해 인덱스되지 않도록 한다.

  FILE_ATTRUBUTE_OFFLINE : 데이터가 오프라인 상태로 즉시 사용 불가.

  FILE_ATTRUBUTE_READONLY : 읽기 전용 속성으로 생성.

  FILE_ATTRUBUTE_SYSTEM : 시스템 파일로 생성.

  FILE_ATTRUBUTE_TEMPORARY : 임시 파일로 생성.


8) HANDLE hTemplateFile 

// 새로 만들 파일의 속성을 제공할 템플릿 파일, 필요없어 쓰지마. 




#예제1

- 파일에 내용을 쓰기 목적으로 열기

- 다른 프로세스가 열어서 읽는 것까지는 허용

- 파일이 없으면 만들어서 열고 있으면 실패

- 함수 사용 예제

HANDLE hFile;

hFile = CreateFile("c:\\test.txt", GNERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW,                                                     FILE_ATTRIBUTE_NORMAL, NULL);



#예제2

- 파일이 있으면 열고 없으면 새로 만들어서 열기

- 파일에 내용을 읽기 목적으로 열기

- 함수 사용 예제

HANDLE hFile;

hFile = CreateFile("test.txt",GENERIC_READ, FILE_SHARE_READ, NULL

                         ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);


# CreateFile 예제3

- 파일이 있으면 열고 없으면 실패

- 함수 사용 예제

HANDLE hFile;

hFile = CreateFile("test.txt",GENERIC_READ, FILE_SHARE_WRITE, NULL

                          , OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);




'WIN32 API' 카테고리의 다른 글

WIN32 API- 파일 공유  (0) 2018.12.11
WIN32 API- 파일의 입출력 예제2  (0) 2018.12.08
WIN32 API- 파일의 입출력 예제1  (0) 2018.12.07
WIN32 API- 파일의 입출력(ReadFile)/(WriteFile)  (0) 2018.12.06
WIN32 Programming  (0) 2018.12.06

+ Recent posts