본문 바로가기

Programming

(224)
[Windows/WinAPI] CloseHandle, DeleteFile, RemoveDirectory BOOL WINAPI CloseHandle( _In_ HANDLE hObject ----①); 함수 설명 :사용한 핸들을 반납한다. Win32 환경에서 핸들로 표현되는 대부분의 커널 오브젝트를 닫는다. 그러나 아이콘, 윈도우, 펜, 브러시 등의 유저 오브젝트, GDI오브젝트는 이 함수로 닫을 수 없다. 이 한수는 핸들 사용 카운트를 1 감소시키고 오브젝트를 계속 유지 할지 말지를 결정한다. 오브젝트를 가리키는 마지막 핸들이 닫히면 오브젝트가 메모리상에서 제거된다. 단, 스레드의 핸들을 닫는다고 해서 스레드가 파괴되는것은 아니다. ① hObject :닫고자 하는 핸들값. ----------------------------------------------------------------------------..
[Windows/WinAPI] CopyFile BOOL CopyFile(LPCTSTR lpExistingFileName, -----①LPCTSTR lpNewFileName, ------②BOOL bFailIfExists -----③); 함수 설명 :파일을 복사하여 새로운 파일을 만든다. 원본 파일을 읽어 새 파일을 완전히 작성한 후 리턴하며, 만약 파일 복사중에 경과를 보여주고 싳다면 CopyFileEx 함수를 이용하여야 한다. 복사중 데이터를 변경하거나 검사하고 싶다면 이 함수를 없고 ReadFile이나 WriteFile을 이용하여야 한다. 파일 속성은 복사가 되지만 보안속성은 복사가 되지 않는다. ① lpExistingFileName :복사할 원본 파일, 완전 경로를 지정할 수 있다. ② lpNewFileName :복사하여 새로 생성될 파일 이름..
[Windows/WinAPI] MoveFile() , MoveFileEx() BOOL MoveFile(LPCTSTR lpExistingFileName, ------①LPCTSTR lpNewFileName -----②); 함수 설명 : 파일이나 디렉토리의 위치를 변경한다. 파일의 경우 같은 디렉토리의 다른 이름으로 변경도 가능하며 디렉토리는 포함된 모든 파일과 서브 디렉토리를 같이 이동시킨다. 위치를 옮기는 것은 원래 파일을 지우고 새 위치에 파일을 생성하는 것과 동일하지만 같은 드라이브내에서는 디스크 할당 표만 수정하고 실제 데이터는 이동하지 않아도 되므로 CopyFile 함수를 사용하는 것보다 이 함수를 사용하는 것이 훨씬 더 빠르다. ① lpExistingFileName : 위치를 변경시킬 파일 또는 디렉토리의 이름을 인수로 전달한다. ② lpNewFileName :파일, 디..
[Windows/WinAPI] WriteFile() BOOL WriteFile(HANDLE hFile, ----①LPCVOID lpBuffer, ----②DWORD nNumberOfBytesToWrite, ----③LPDWORD lpNumberOfBytesWritten , ----④LPOVERLAPPED lpOverlapped ----⑤); 함수 설명 :파일에 데이터를 기록한다. 주로 동기적인 출력에 사용하지만 OVRELAPPED 구조체를 제공하묜 비동기 입출력을 비동기 입출력을 할 수 있다. 파일 포인터가 가리키고 있는 지점에 데이터를 기록하며 기록을 완료한 후 실제 기록한 바이트 수만큼 파일 포인터를 이동시켜준다. 단 비동기 입출력중일때는 파일 포인터를 직접이동시켜 주여야한다. 또한 파일 뿐만이 아니라 파이프 소켓 통신포트 콘솔 등의 장치에도 데이터를..
[Windows/WinAPI] ReadFile() BOOL ReadFile(HANDLE hFile, ----①LPVOID lpBuffer, ----②DWORD nNumberOfBytesToRead, ------③LPDWORD lpNumberOfBytesRead, -----④LPOVERLAPPED lpOverlapped ------⑤); 함수 설명 : 파일로부터 데이퍼를 읽는다. 주로 동기적인 입력에 사용하기 때문에 데이터를 완전히 읽기 전에는 리턴하지 않는다. 비동기 입력에 사용할 경우는 즉시 리턴한다. 파일 포인터 위치에서부터 데이터를 읽으며 다 읽은 후에는 실제 읽은 바이트 수만큼 파일 포인터를 이동시켜 준다. 단, 비동기 입출력 중에는 직접 파일 포인터를 이동시켜 주어야한다. ① hFile : 데이터를 읽고자 하는 파일의 핸들이다. 이때는 파일을 ..
[Windows/WinAPI] CreateFile() CreateFile(LPCTSTR lpFileName, ------①DWORD dwDesiredAccess, -------②DWORD dwShareMode, ------③LPSECURITY_ATTRIBUTES pSecurityAttributes, -----④DWORD dwCreationDisposition, -------⑤DWORD dwFlagsAndAttributes, --------⑥HANDLE hTemplateFile -------⑦); 함수 설명 : WindowsAPI함수 중에서 파일을 생성하는 가장 기본적인 함수이다. 또한 단지 파일을 생성하는 것뿐만 아니라 기존의 파일을 열수도 있으며 각종 오브젝트를 생성하고 열 수도 있다.- 파이프- 메일슬롯- COM 포트 등의 통신 장치- 디스크장치- 콘솔..
[Windows/WinAPI] LoadLibrary, GetProcAddress 사용 (실습5) DLL을 만들고 사용하는 실습이다. DLL을 만드는 방법 1. windows 콘솔로 프로젝트를 만들고 항목에서 dll을 체크하여 프로젝트 만들기.2. 원하는 함수 집어 넣기. 위와 같은 형태로 지정하여 컴파일하면 dll이 만들어 진다.__declspec(dllexport) void __cdecl Function1(void)와 같은 형태로 사용을 해야 하며 함수마나 하나씩 다 지정을 해주어야 한다.그리고 dll은 디버깅이 불가능 하기 때문에 DbgView로 확인 하기 위해서 OutputDebugString(); 함수를 이용하였다. 현재 총 5개의 함수를 만들었다. 제작한 tttt.dll을 dependency로 확인해 보았다. 위에보면 TTTT.dll에 5개의 함수들이 보인다. 이제 .exe를 만들어서 실행..
[Windows/WinAPI] main ,_tmain간의 차이 ▶ main : 우리가 처음 C언어를 배우면서 가정 먼저 접하게 된다. 머 별 다른것은 없고 문자 인수를 아스키코드 집합으로 사용한다. ▶_tmain: Winapi수업을 들으면서 처음사용하게 되었다. 그냥 문자인수를 유니코드 집합으로 사용한다는것만으로 알고 있었는데 따라 들어가보니 #define로 정의되어 있었다......#define _tmain wmain와 형태로 정의가 되어있었는데 재미있는것은 tchar.h 해더파일 안에 정의가 되어 있다는 것이다... 무튼 결국은 wmain 의 형태로 사용하는 것이기 때문에 유니코드 집합으로 사용한다고 이해하면 될 것이다.