Windows API
Windows API(Windows Application Programming Interface)는 응용 프로그램이 Microsoft Windows의 기능에 접근하기 위해 사용하는 프로그래밍 인터페이스들의 집합이다. 파일과 메모리·프로세스·스레드, 창과 메시지, 그래픽스·입력, 보안·네...
| 분류 | 응용 프로그램 프로그래밍 인터페이스(API) |
|---|---|
| 개발사 | Microsoft |
| 주요 플랫폼 | Microsoft Windows |
| 전신 | 16비트 Windows API(Win16) |
| 대표 네이티브 API | Win32, 64비트 Windows API |
| 주요 하위 계층 | Kernel API·User API·GDI·COM·보안·네트워크 |
| 관련 기술 | COM, DirectX, Windows Runtime |
| 주요 언어 | C, C++, 기타 FFI 지원 언어 |
| 도구 | Windows SDK, Visual Studio |
| 공식 명칭 | Windows API(과거 Win32 API로 통칭) |
| 공식 문서 | Microsoft Learn: Windows API Index |
Windows API(Windows Application Programming Interface)는 응용 프로그램이 Microsoft Windows의 기능에 접근하기 위해 사용하는 프로그래밍 인터페이스들의 집합이다. 파일과 메모리·프로세스·스레드, 창과 메시지, 그래픽스·입력, 보안·네트워크와 장치 기능을 포함한다. 초기 16비트 Windows API에서 발전했으며 현재는 32비트와 64비트 Windows 응용 프로그램을 지원한다. 과거에는 이를 폭넓게 Win32 API라고 불렀지만 Microsoft는 Windows API가 Win16과 64비트 Windows도 포괄한다는 점에서 더 정확한 이름이라고 설명한다.[1]
1980년대 Windows 1.x·2.x에는 16비트 응용 프로그램이 창과 그래픽스를 처리하는 API가 제공됐으며, Windows NT 및 Windows 95 세대에서 Win32로 확대됐다. 응용 프로그램은 운영체제 기능에 대한 호출 규약·데이터 구조·함수와 메시지의 계약을 따르므로 매번 드라이버나 커널 코드를 직접 작성하지 않아도 된다. 그러나 모든 Windows API가 동일한 DLL에 들어 있는 것은 아니다. 예를 들어 창 관리는 user32.dll, GDI 일부는 gdi32.dll 등 기능별 모듈과 시스템 서비스로 나뉜다.
네이티브 프로그램은 Windows SDK 헤더에서 선언된 타입·함수와 라이브러리를 사용하며, C·C++ 외 언어도 외부 함수 인터페이스를 통해 접근한다. 대표적인 Win32 앱은 WinMain 진입점, 창 클래스 등록과 윈도 프로시저, 메시지 반복문을 갖는다. 운영체제는 사용자 모드 라이브러리와 커널 시스템 호출을 통해 기능을 수행한다. Windows API 전체가 커널의 비공개 Native API와 동일한 것은 아니며, 문서화된 Win32 계약과 내부 구현은 구분해야 한다.[2]
Windows API에는 기존 Win32 외에도 COM, OLE, RPC, 그래픽스 API와 여러 플랫폼 기능이 포함된다. DirectX는 그래픽·오디오·게임용 별도 API 묶음이고, Windows Runtime(WinRT)과 Windows App SDK는 새로운 응용 프로그램 모델을 지원한다. 일부 기능은 동일한 Windows에서 서로 병행할 수 있으며, Win32를 사용한다는 사실이 반드시 옛날 GUI만 제작할 수 있음을 뜻하지 않는다.
운영체제 버전과 에디션·CPU 아키텍처에 따라 사용 가능한 API가 달라진다. Windows용 실행 파일의 ABI와 PE 형식, 32비트 프로그램의 WOW64, 권한·UAC, 샌드박스 정책을 함께 고려해야 한다. Windows SDK의 헤더에 선언된 함수라도 특정 시스템에는 구현되지 않거나 권한·기기 조건이 요구될 수 있다. 기술사에서 Windows API는 Microsoft 운영체제와 제삼자 응용 프로그램 생태계를 연결하는 핵심 장기 호환성 계약이다.[3]