CreateFile 함수란 무엇인가?
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
읽기/쓰기 모드를 지정한다 or연산으로 결합가능하다.
*GENERIC_READ - 읽기 모드 지정
*GENERIC_WRITE - 쓰기 모드 지정
dwShareMode
파일 공유 방식을 지정한다.
* 0 - 다른프로세스에 절대 공유 불가, 이미 개방된 파일은 중복 개방 불가.
* FILE_SHARE_READ - 다른 프로세스에서 이파일에 동시 읽기 접근 가능.
* FILE_SHARE_WRITE - 다른 프로세스에서 이파일에 동시 쓰기 접근 가능, 단
동시에 같은 영역에 데이처를 쓰는 문제를 피해야한다.
lpSecurityAttributes
보안속성을 지정한다. 핸들을 자식 프로세스에게 상속할 것인지 말 것인지를 결정하기 위한
용도로 사용할 수 있다. 디폴트 보안 속성을 지정하고자 하는 경우 NULL을 전달한다.
dwCreationDisposition
파일이 생성되는 방법을 지정한다.
*CREATE_ALWAYS - 항상 새 파일을 생성한다.
*CREATE_NEW - 새 파일 생성, 같은 이름의 파일이 존재하면 생성 실패
*OPEN_ALWAYS - 기존 파일 개방 , 없으면 새로 생성,
*OPEN_EXISTING - 기존 파일 개방 ,존재하지 않으면 함수 호출 실패!
*TRUNCATE_EXISTING - 기존 파일의 내용 지우고 개방,파일이 존재하지 않으면 호출실패!
dwFlagsAndAttributes
파일의 특성 정보를 설정한다. 둘 이상의 특성정보가 OR 연산자를 통해서 지정될 수 있으며
기본적으로 FILE_ATTRIBUTE_NORMAL이라는 값을 사용한다. 이는 말 그대로 특별한 특성을
지정하지 않은 보통 파일임을 의미한다. 이 외에도 지정할 수 있는 값들이 상당히 많다.
여기 참조 -https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa363858(v=vs.85).aspx
hTemplateFile
기존에 존재하는 파일과 동일한 특성을 가지는 새 파일을 만들 때 사용되는 전달인자이다.
windows me/95/98 에서는 지원하지 않는다.
함수가 성공하면 반환 값은 지정된 파일, 장치, 명명 된 파이프 또는 메일 슬롯에 대한 열린 핸들입니다.
함수가 실패하면 반환 값은 INVALID_HANDLE_VALUE 입니다.