CreateFile, ReadFile, WriteFile
Programming/API 2015. 6. 22. 16:03CreateFile()
- 파일 혹은 오브젝트를 생성하거나 열 수 있는 함수이다.
- 파일의 핸들을 할당하는 함수
- ( 핸들을 받아와서 다른 함수들을 이용해서 읽기, 쓰기등을 할 수 있다.)
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 |