728x90
반응형

전체 글 410

[Windows/WinAPI] GetCurrentProcess, GetCurrentProcessId, ResumeThread, WaitForSingleObject

HANDLE WINAPI GetCurrentProcess(void); 함수 설명 :넘겨주는 인자는 없으며 현재 실행중인 프로세스의 핸들을 반환값으로 넘겨둔다. DWORD WINAPI GetCurrentProcessId(void); 함수 설명 : 넘겨주는 인자는 없으며 형재 실행중인 프로세스 ID를 반환값으로 넘겨준다. DWORD WINAPI ResumeThread( _In_ HANDLE hThread ----- 쓰래드 핸들 ); 함수 설명 :쓰레드 대기 계수 값을 감소 시킨다. 만약 대기 값이 0이 되면, 대기중이던 쓰래드가 실행이 된다. DWORD WINAPI WaitForSingleObject( _In_ HANDLE hHandle, -----① _In_ DWORD dwMilliseconds -----..

개발 2013.10.25

[Windows/WinAPI] LoadLibrary, GetProcAddress, FreeLibrary

HMODULE WINAPI LoadLibrary( _In_ LPCTSTR lpFileName ------① ); 함수 설명 : 필요한 DLL을 프로세스 가상 메모리에 매핑하는 기능을 제공한다. 그리고 GetProceAddress 함수를 통해서 필요한 함수 포인터를 획득할 수 있다. 함수 성공시 DLL 모듈 핸들을 반환한다. ① lpFileName : 프로세스 주소 공간으로 매필시킬 DLL이름을 지정한다. 절대경로로 지정하여도 되고 그렇지 않다면 표준 검색 경로를 기준으로 지정된 이름의 파일을 찾는다. ※ 표준 검색 경로 순서 1. 실행파일이 존재하는 디렉터리2. 프로세스의 현재 디렉터리3. Windows 시스템 디렉터리4. Windows 디렉터리5. PATH 환경변수에 등록되어 있는 모든 디렉터리 FAR..

개발 2013.10.25

[Windows/WinAPI] __declspec(dllimport), __declspec(dllexport)

선언문 : __declspec(dllimport), __declspec(dllexport) 외부에 제공할, 혹은 외부로부터 제공받을 함수 밑 변수 선언에 사용한다. 이는 이는 C언어나 C++에서 제공하는게 아닌 마이크로소프트에서 제공하는 추가적인 선언문이다. __declspec(dllimport)DLL로 부터 제공받을(Import) 함수를 선언할 때 사용된다. __declspec(dllexport) 외부에 제공할(export) 함수를 선언할 때 사용된다. 함수에 이 선언부를 사용하면 외부에서 사용할 수 있는 형태의 DLL로 라이브러리화 하겠다는 뜻이다. *DLL을 만들떄에는 함수 앞에 export선언을 해주어야한다.

개발 2013.10.25

[Windows/WinAPI] CreateFileMapping, MapViewOfFile, UnmapViewOfFile

HANDLE WINAPI CreateFileMapping( _In_ HANDLE hFile, -----① _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes, -----② _In_ DWORD flProtect, -----③ _In_ DWORD dwMaximumSizeHigh, -----④ _In_ DWORD dwMaximumSizeLow, -----⑤ _In_opt_ LPCTSTR lpName -----⑥ ); 함수 설명 : 이 함수를 사용을 할려면 먼저 파일에 대한 핸들이 있어야 한다. 파일을 맵핑하는 것이기 때문에 당연한것이라 생각 하면된다. 함수 성공시 파일 연결 오브젝트 핸들을 반환한다. 그리고 이 핸들을 MapViewOfFile 함수를 사용하여 실제 메모리에 맵핑을 한..

개발 2013.10.24

[Windows/WinAPI] RegSetValueEx, RegCloseKey, RegDeleteValue, RegQueryValueEx

LONG WINAPI RegSetValueEx( _In_ HKEY hKey, ------① _In_opt_ LPCTSTR lpValueName, ------② _Reserved_ DWORD Reserved, ------③ _In_ DWORD dwType, ------④ _In_ const BYTE *lpData, ------⑤ _In_ DWORD cbData ------⑥ ); 함수 설명 : 열려있는 레지스크리 키(hKey)를 이용하여 lpValueName에 명시된 항목 이름의 데이터 형식이나 내용을 설정하는데 사용하는 함수이다. 성공시 ERROR_SUCCESS를 반환한다. ① hKey : 현재 열어서 사용하고 있는 레지스트리 키에 대한 핸들을 명시하거나 미리 정의된 값을중 하나를 명시한다.(RegCre..

개발 2013.10.24

[Windows/WinAPI] CreateProcess, GetStartupInfo, GetStdHandle, WaitForSingleObject, ResumeThread(실습6)

이것저것 하다보니 늦게 정리했다.... 결국 올려준 실습도 아직 못 했고.... 일단 수업때 했던 실습예제부터 정리해본다... 구구단을 출력 하는 예제이다.CreateProcess를 이용하여 출력한다. 먼저 구구단을 출력할 프로세스를 만든다. 딱히 별 다른 설명이 필요없다. 2번째 인자로 몇단인지 String으로 받고 13번째 줄이서 이를 정수 값으로 바꾸어 주었다. 그리고 간단하게 GetCurrentProcess를 이용하여 해당 프로세스의 ID값을 읽고 해당 프로세스에서 구구단을 출력한다. 다음은 프로세를 호출하는 프로세스를 만든다. 전체 코드이다... (몇줄 안된다...) 먼저 선언부분이다. 5번 라인에서 보면 앞에서 만든 프로세스 이름이다. 그리고 17번과 19번 라인에서 정보를 받을것이라 명시하고..

개발 2013.10.24

[Windows/WinAPI] RegOpenKeyEx, RegEnumKeyEx, RegEnumValue

LONG WINAPI RegOpenKeyEx( _In_ HKEY hKey, -----① _In_opt_ LPCTSTR lpSubKey, -----② _Reserved_ DWORD ulOptions, -----③ _In_ REGSAM samDesired, -----④ _Out_ PHKEY phkResult -----⑤ ); 함수 설명 :지정된 레지스트리 키를 오픈합니다. 지정된 레지스트리 키가 존재하지 않는 경우는 키를 작성하지 않기 때문에 에러를 발생한다. 성공시 ERROR_SUCCESS(0)를 반환한다. ① HKey : 오픈 되는 키의 핸들을 지정한다. 자세한건 RegCreateKeyEx 참고. ② lpSubKey :오픈하는 서브 키의 이름을 나타내응 문자열의 주소를 지정한다. 자세한건 RegCreat..

개발 2013.10.21

[Windows/WinAPI] RegCreateKeyEx,

LONG WINAPI RegCreateKeyEx( _In_ HKEY hKey, -----① _In_ LPCTSTR lpSubKey, -----② _Reserved_ DWORD Reserved, -----③ _In_opt_ LPTSTR lpClass, -----④ _In_ DWORD dwOptions, -----⑤ _In_ REGSAM samDesired, -----⑥ _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, -----⑦ _Out_ PHKEY phkResult, -----⑧ _Out_opt_ LPDWORD lpdwDisposition -----⑨ ); 함수 설명 : 함수 성공시 특이하게도 ERROR_SUCCESS(0)을 반환한다. 레지스트리 키를 만들며..

개발 2013.10.20

[Windows/WinAPI] LockFIleEx

BOOL WINAPI LockFileEx( _In_ HANDLE hFile, ------① _In_ DWORD dwFlags, ------② _Reserved_ DWORD dwReserved, ------③ _In_ DWORD nNumberOfBytesToLockLow, ------④ _In_ DWORD nNumberOfBytesToLockHigh, ------⑤ _Inout_ LPOVERLAPPED lpOverlapped ------⑥ ); 함수 설명 : CreateFile 함수로 오픈한 파일에 Lock을 건다. LockFile와의 차이로는 LockFile은 배타적인 잠금만 가등하지만 LockFIleEx는 공유적인 잠금도 가능하다. 플래그 값을 0으로 주면 공유잠금이 되며 배타적인 잠금을 하기 위해서는..

개발 2013.10.19
728x90
반응형