프로그래밍/MFC , WinAPI

CreateFile 함수란 무엇인가?

친루엄 2018. 4. 5. 16:59
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 입니다.