CreateFile, ReadFile, WriteFile

Programming/API 2015. 6. 22. 16:03

CreateFile()

- 파일 혹은 오브젝트를 생성하거나 열 수 있는 함수이다.

- 파일의 핸들을 할당하는

- ( 핸들을 받아와서 다른 함수들을 이용해서 읽기, 쓰기등을 할 수 있다.)

 

HANDLE CreateFile( LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagAndAttributes,

HANDLE hTemplateFile

);

 

 

DWORD dwDesiredAccess : 파일을 생성하거나 열 경로

DWORD dwShareMode : 파일을 열거나 쓰기 등을 할때의 접근 권한 지정(플래그 중복 가능)

LPSECURITY_ATTRIBUTES lpSecurityAttributes : SECURITY_ATTRIBUTES 구조체의 포인터

                                                                               (사용하지 않을 경우 NULL)

** LPSECURITY_ATTRIBUTES 커널객체, 다른 프로세스간 공유가능  (유저 모드가 아님)

 

DWORD dwCreationDisposition : 파일이 해당 위치에 존재하는지 여부에 따른 행동

                                                 (하나의 플래그만 지정 가능)

DWORD dwFlagAndAttributes : 생성될 파일의 속성 지정 ( 플래그 중복 지정 가능 )

HANDLE hTemplateFile : 생성된 파일에 대한 속성을 제공하는 템플릿( 사용하지 않으면 NULL)

 

 

 

 

ReadFile()

- 파일로부터 데이터를 읽는다.

- 테이터를 완전히 읽기 전에는 리턴하지 않는다.

- 파일 포인터 위치에서부터 데이터를 읽으며 다 읽은 후에 실제 읽은 바이트 수만큼

   파일 포인터를 이동시켜 준다.

** CreateFile()를 사용해서 파일의 핸들을 먼저 받아와야 한다.

 

BOOL WINAPI ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumberOfBytesToRead,

LPWORD lpNumberOfBytesRead,

LPOVERLAPPED lpOverlaped

);

 

HANDLE hFile : 파일의 핸들( 반드시 읽기 권한이 있어야한다.)

LPVOID lpBuffer : 파일로 읽은 데이터를 받아올 버퍼의 포인터

DWORD nNumberOfByteRead : 읽어들인 데이터 바이트의 수를 리턴받는 인수

                                              (함수 호출시에 0으로 초기화)

LPOVERLAPPED lpOverlapped : 비동기 입출력을 위한 OVERLAPPED 구조체 포인터

                                               (사용하지 않을 경우 NULL)

 

WriteFile()

- 파일 데이터를 쓰는 함수

 

BOOL WriteFile(

HANDLE hFIle,

LPVOID lpBuffer,

DWORD nNumberOfBytesToWrite,

LPDWORD lpNumberOfBytesWritten,

LPOVERLAPPED lpOverlapped

);

 

 

HANDLE hFIle :

LPVOID lpBuffer :

DWORD nNumberOfBytesToWrite : 기록할 데이터으 길이

LPDWORD lpNumberOfBytesWritten : 기록한 데이터 바이트의 수를 리턴

LPOVERLAPPED lpOverlapped :

 

 

 

 

'Programming > API' 카테고리의 다른 글

멀티미디어 타이머로 더 정밀한 컴퓨터 경과시간 얻기(msec단위)  (0) 2015.09.22
DIB 구조  (0) 2015.06.22
DDB의 구조,출력  (0) 2015.06.22
비트맵,DDB,DIB  (0) 2015.06.21
SendMessage  (0) 2015.06.16
admin