728x90
반응형

Programming/Windows&C# 64

[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 의 형태로 사용하는 것이기 때문에 유니코드 집합으로 사용한다고 이해하면 될 것이다.

[Windows/WinAPI] 레지스트리 Key 생성하기(실습4)

#include #include #include #include int _tmain(INT argv , LPTSTR argc[]){LONG result = 0;LONG result2 = 0;TCHAR data1[20];TCHAR data2[50];DWORD data3 ; HKEY obtainKey = NULL; _tsetlocale(LC_ALL, _T("Korean"));_tprintf(_T("2010105094 정민우\n"));if(argv != 4){_tprintf(_T("error\n"));return 1;}_tcscpy(data1 ,argc[2]);_tcscpy(data2 ,argc[1]);data3 = (DWORD)_ttoi(argc[3]);if(_tcscmp(data2, _T("HKEY_CUR..

[Windows/WinAPI] Polymorphic 자료형

Polymorphic 자료형은 MS에서 64bit 기반으로 넘어가면서 새롭게 정의한 자료형이다. 형태는 아래와 같다. #if defined(_WIN64)typedef _int64 LONG_PTR;typedef unsigned _int64 ULONG_PTR; typedef _int64 INT_PTR;typedef unsigned _int64 UNIT_PTR; #elsetypedef long LONG_PTR;typedef unsigned long ULONG_PTR; typedef int INT_PTR;typedef unsigned int UNIT_PTR; #endif 이러한 형태로 되어있기 때문에 OS가 64bit이든 32bit이든 상관없이 잘 돌아간다. 다시 말하면 자료형이 맞춰서 변한다고 보면 된다.

[Windows/WinAPI] FindFirstFile , FileTimeToSustemTime, FindNextFile (실습3)

#include #include #include #include int _tmain(INT argc , LPCSTR argv[]){HANDLE han;WIN32_FIND_DATA TT1;SYSTEMTIME A1; _tsetlocale(LC_ALL , _T("Korean"));han = FindFirstFile(_T("D:\\test0926\\*.*"), &TT1);if(han == false){_tprintf(_T("FindFirstFile error!!\n"));return 0;}if(!FileTimeToSystemTime(&TT1.ftCreationTime , &A1)){_tprintf(_T("FileTimeToSystemTime error!!\n"));return 1;} while(FindNextF..

[Windows/WInAPI] 윈도우 시스탬 프로그래밍 실습 02

// 파일 두개를 합쳐서 하나의 파일에 복사 #include #include #include #include int _tmain (int argc, LPCTSTR argv[]) { HANDLE hIn1, hIn2 , hOut; DWORD nIn1, nIn2, nOut; TCHAR buffer[256]; _tsetlocale(LC_ALL , _T("korean")); if(argc != 4) { _tprintf(_T("error1")); return 1; } hIn1 = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hIn1 == INVALID_HANDLE_VALUE..

728x90
반응형