되는대로 살자

[API] 소스분석(first) - 헤더파일&시작점 본문

2009~2014/Windows_API

[API] 소스분석(first) - 헤더파일&시작점

malu 2011. 6. 20. 18:36
소스코드를 분석하며 도스와의 차이점을 알아보자.

1.헤더파일
windows.h 하나만 포함되어 있는데 API에서는 함수 원형과 상수들을 여기에 싹 다 저장하고 있기 때문에 도스처럼 일일이 헤더파일을 따로 선언해주지 않아도 된다.

2.시작점
시작점은 main 함수가 아니라 WinMain 이다. 따라서 윈도우즈 프로그램은 WinMain에서부터 실행을 시작한다. 이 함수의 원형은 다음과 같다.
in APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
도스에서는 main 함수에서 인수를 여러 개 지정하며 변형 할 수 있지만 WinMain의 원형은 고정되어 있다. 각 인수의 의미는 다음과 같다.

hInstance : 프로그램의 인스턴스 핸들
*인스턴스: 클래스가 메모리에 실제로 구현된 실체.  이래도 이해가 안가면 검색을 하여 자세히 알아보기를..)

hPrevInstance : 바로앞에 실행된 현재 프로그램의 인스턴스 핸들. 없을 경우는 NULL이 되며 Win32에서는 항상 NULL이다. 호환성을 위해서만 존재하는 인수이므로 신경쓰지 않아도 된다.
(혹시 NULL을 모르진 않겠지만 그래도 설명을... NULL은 빈 값을 의미, 인수: 함수에서 나오는데 다음 함수 first에서 검은 부분이 인수 void first(int i,char d)

lpszCmdParam : 명령행으로 입력된 프로그램 인수이다. 도스의 argv 인수에 해당한다.
(음.. 보통 나는 그냥 C프로그래밍을 할 때는 argv 인수를 본 적이 없어서 모를 사람이 있을 것 같아서 말함. 이것에 대해 알고 싶다면 리버스 엔지니어링 책을 보던가, 시스템 해킹 책을 보면 나옴)

nCmdShow : 프로그램이 실행될 형태이며 최소화, 보통 모양 등이 전달된다.