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 |