Go/window_api

[Go] Windows API 기본 개념, DLL, 시스템 호출, 메시지 루프,Handle

_HelloWorld_ 2025. 3. 5. 11:19

Windows API 기본 개념

Windows API는 Windows 운영체제가 제공하는 강력한 기능을 애플리케이션에서 사용할 수 있도록 돕는 함수들의 집합

이걸 잘 다루면, 윈도우 시스템을 더 깊이 이해하고 제어함

 

 1. DLL (Dynamic-Link Library)

  • DLL은 여러 프로그램이 공통으로 사용할 수 있는 함수나 리소스를 모아둔 파일입니다.
  • 대표적인 예: user32.dll, kernel32.dll
  • DLL은 프로그램이 실행될 때 필요할 때만 메모리에 로드되어, 프로그램 크기를 줄이고, 메모리를 효율적으로 사용할 수 있습니다.
  • Go에서 DLL 함수를 호출하려면 syscall이나 golang.org/x/sys/windows 패키지를 사용합니다.


 2. 시스템 호출 (System Call)

  • 시스템 호출은 운영체제가 제공하는 커널 기능을 사용하는 함수 호출입니다.
  • 예를 들어, 파일 읽기/쓰기, 프로세스 생성, 메모리 할당 같은 작업이 시스템 호출로 이루어집니다.
  • Windows API는 내부적으로 시스템 호출을 감싸는 래퍼 함수라고 볼 수 있습니다.

예를 들어, GetCursorPosuser32.dll의 API지만, 결국 커널에서 마우스 위치 데이터를 가져옵니다.


3. 메시지 루프 (Message Loop)

  • Windows는 이벤트 기반 시스템이라, 키보드 입력, 마우스 클릭 같은 이벤트는 '메시지'로 전달됩니다.
  • 메시지 루프는 프로그램이 종료될 때까지 메시지를 계속 확인하고 처리하는 역할을 합니다.
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
	TranslateMessage(&msg);
	DispatchMessage(&msg);
}

4. 핸들 (Handle)

  • 핸들은 Windows에서 다양한 객체(창, 파일, 프로세스 등)를 가리키는 고유한 ID입니다.
  • 예를 들어, FindWindow API는 창의 핸들을 반환합니다. 이후 이 핸들로 창을 조작할 수 있습니다.

Notepad, Google Chrome