//파일 핸들 닫기 / 열기
HANDLE WINAPI CreateFile( //파일을 열때
__in LPCTSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in HANDLE hTemplateFile
);
1) 개방할 파일 이름을 지정한다.
2) 읽기 쓰기 모드를 지정한다
3) 파일 공유 방식을 지정한다.
4) 보안 속성을 지정한다
5) 파일이 생성되는 방법을 지정한다
6) 파일의 특성 정보를 설정한다
7) 기존에 존재하는 파일과 동일한 특성을 가지는 새 파일을 만들 때 사용되는 전달인자다.
일반적으로 NULL 을 넣는다.
열린 파일을 종료할 때는 여느 커널 오브젝트의 핸들과 마찬가지로 CloseHandle() 을 호출한다.
파일을 개방할 때도 커널 오브젝트가 생성되고, 핸들이 반환된다.
이 함수의 호출을 통해 생성되는 커널 오브젝트에는 파일에 대한 정보로 가득할 것이다.
//파일 읽기 / 쓰기
파일에 데이터를 읽을 때에는 다음 함수를 사용한다.
BOOL WINAPI ReadFile(
__in HANDLE hFile,
__out LPVOID lpBuffer,
__in DWORD nNumberOfBytesToRead,
__out LPDWORD lpNumberOfBytesRead,
__in LPOVERLAPPED lpOverlapped
);
1) 데이터를 읽을 파일의 핸들을 지정한다
2) 읽어 들인 데이터를 저장할 버퍼(배열, 메모리)의 주소(포인터)를 지정한다.
3) 파일로부터 읽고자하는 데이터의 크기를 바이트 단위로 지정한다.
4) 실제 읽어 들인 데이터 크기를 얻기 위한 변수의 주소를 지정한다.
5) 나중에 설명한다.
반대로 파일에 데이터를 저장할 때에는 다음 함수를 이용한다.
BOOL WINAPI WriteFile( //데이터 저장을 위해
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out LPDWORD lpNumberOfBytesWritten,
__in LPOVERLAPPED lpOverlapped
);
1) 데이터를 저장할 파일의 핸들을 지정한다
2) 데이터를 저장하고 있는 버퍼의 주소를 지정한다
3) 파일에 저장하고자 하는 데이터 크기를 바이트 단위로 지정한다.
4) 파일에 실제 저장된 데이터 크기를 얻기위해 변수의 주소를 지정한다.
5) 나중에 설명한다.
'Windows > System Programming' 카테고리의 다른 글
파일의 시간 정보 얻어오기. (0) | 2011.08.12 |
---|---|
기본적인 파일 입출력 함수들 part 1 예제 (0) | 2011.08.12 |
프로세스 환경변수 (0) | 2011.08.12 |
프로세스 정보를 얻는 예 (소스코드) (0) | 2011.08.12 |
핸들의 상속과 커널 오브젝트의 Usage Count (0) | 2011.08.12 |