Windows API

Windows API(약칭 WINAPI)란 윈도우에서 제공하는 C 언어의 함수와 구조체, 그리고 핸들로 이루어진 API이다. 약칭은 WINAPI. 윈도우가 새로 나올 때마다 새로운 함수와 기능이 추가되었다.

Windows API와 비슷한 것으로 LINUX의 systemcall이 있지만 완전히 동일한 역할을 하지 않는다. Windows API는 각 API 함수 안에서 응용프로그램에게 공개되지 않은 Windows커널의 systemcall을 호출하는 형식으로 되어 있다.

현재는 Windows API를 직접 사용하여 프로그램을 제작하기 보다는 더 고수준 언어인 C#이나 C++를 이용하여 제작하는 추세이다.

1 버전[편집]

WINAPI는 윈도우의 버전이 올라갈 때마다 함수와 기능이 추가되었지만, 크게 다음과 같이 나뉜다.

1.1 WIN16[편집]

윈도우 1.0부터 윈도우 3.1 때까지의 WINAPI를 지칭한다. 이 때의 WINAPI는 16비트 CPU와 윈도우에서 작동하겠끔 되어 있다. 현재는 사용하지 않지만, WIN16에 있던 함수들은 하위호환성을 위해서 여전히 컴파일할 수 있게 남아 있다.

1.2 WIN32[편집]

본래 WIN32API는 32비트 윈도우에서 사용되는 WINAPI를 지칭하는데 Windows NT 3.5에 맞춰 제작이 되었다가 나중에 32비트로 넘어온 Windows 95로 이식되었다. 따라서 CPU아키텍처 뿐만 아니라 기본 커널의 구성도 달라 졌기 때문에 WIN16API와 상당한 차이를 보인다.

또한 이 때부터 유니코드를 사용한 프로그램의 제작을 위해 유니코드 전용으로 사용하는 함수가 추가되었지만, 윈도우95와 윈도우98과 같은 MS-DOS가 아래에 있는 윈도우에서는 유니코드를 사용하는 함수는 사용할 수 없었다.

또한 이때부터 GDI와 GDI+를 사용하기 시작했다.

1.3 WIN32s[편집]

WIN32S는 16비트 윈도우에서 WIN32로 제작된 프로그램을 사용할 수 있게 하기 위해서 제작된 WINAPI다. 상위호환성을 위해서 잠시 나온 WINAPI이므로 금방 사라졌다.

1.4 WIN64[편집]

64비트 운도우에서 사용하는 WINAPI를 지칭한다. 주로 사용되는 64비트 CPU 명령어 셋인 AMD64가 x86의 확장격으로 만들어 져서 WIN64또한 WIN32와 거의 큰 차이없이 올라왔다.

2 구성요소[편집]

2.1 핸들[편집]

윈도우에서 사용되는 개념으로, 운영체제가 관리하는 자원(윈도우, 파일, 레지스트리등등)을 프로그램이 접근하기 위해서 운영체제에서 제공하는 값을 말한다. WIN32에서는 32비트 정수형이고, WIN64에서는 64비트 정수형이다.

2.2 윈도우 메시지[편집]

윈도우 메시지란, 운영체제 혹은 프로그램에서 보내는 이벤트를 지칭한다. 윈도우 메시지 또한 WINAPI의 발전과 더불어 그 숫자가 증가되었다.

2.3 윈도우 함수[편집]

WINAPI의 경우 대부분의 기능을 함수로 제공한다. 윈도우의 버전이 올라갈 수록 WINAPI가 제공하는 기능도 많아지고, 그에 맞춰 함수도 증가했다.

3 각주