본문 바로가기

C#/Windows

Win32 API에서 제공하는 자료형

728x90

개요

우리가 C, Python 등 평소에 자주 사용하는 프로그래밍 언어에서 쓰이는 int, double과 같은 자료형을 사용하면 변수가 어떤 의미를 갖고 있는지 파악하기 어렵다. 때문에 Windows API는 자료형을 특정한 이름으로 재정의해서 변수의 자료형을 보고 어떤 특성이 있는지 한눈에 알아볼 수 있도록 제공하고 있다.

 

자료형

이름 의미
BOOL Boolean (True 혹은 False)
LPSTR 문자열을 위한 32bit 포인터
UNIT 16bit unsigned int (Win32는 32bit)
WORD 16bit unsigned int
DWORD 32bit unsigned int / 세그먼트의 주소 혹은 offset
LONG 32bit unsigned int
WPARAM 16bit(Win32는 32bit)
프로시저에 전달되는 매개변수 혹은 콜백함수
LPARAM 32bit
프로시저에 전달되는 매개변수 혹은 콜백함수
HANDLE unsigned int / 오브젝트의 핸들
HWND unsigned int / 윈도우의 핸들
HINSTANCE unsigned int / 인스턴스의 핸들

 

핸들(Handle)

운영체제는 리소스를 안전하게 관리하기 위해서 직접적으로 주소를 사용하는 포인터 대신 핸들이라는 개념을 사용한다. 핸들이랑 운영체제 내부에 있는 어떤 리소스의 주소를 정수(32bit 혹은 64bit)로 치환한 값이다.

따라서, HANDLE이란 자료형은 오브젝트의 주소를 나타내는 자료형이라고 생각할 수 있다. 조금 쉽게 말하면 구체적인 어떤 대상에 붙여진 번호이다.

 

핸들의 특징

  • 핸들은 구분을 위한 것이므로 중복을 허용하지 않는다.
  • 운영체제가 발급하며 사용자는 사용만 한다. (핸들 값을 생성하지 않는다.)
  • H로 시작하는 접두어를 가진다.

운영체제는 핸들 테이블(Handle Table)에 리소스의 주소와 핸들의 값을 저장해서 관리하고 있다. 핸들을 의미하는 자료형들은 접두사로 H를 붙여서 사용한다. 예를 들어, 마우스 커서의 핸들 값은 HCURSOR라는 자료형을 사용하고, 아이콘의 핸들 값은 HICON이라는 자료형을 사용한다. 위 표를 보면 윈도우의 핸들은 HWND로 사용한다. 이와 관련된 구체적인 변수 명명법은 다음에...

 

[출처]

https://chanos.tistory.com/entry/Window-API-Win32-API%EC%97%90%EC%84%9C-%EC%A0%9C%EA%B3%B5%ED%95%98%EB%8A%94-%EC%9E%90%EB%A3%8C%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85-%EB%AA%A8%EC%9D%8C%EA%B3%BC-%ED%95%B8%EB%93%A4HANDLE

728x90

'C# > Windows' 카테고리의 다른 글

WndProc으로 Windows Message 제어하기  (0) 2023.11.05
윈도우 프로그래밍 동작 방식  (0) 2023.11.05
Win64 API가 있나요?  (0) 2023.11.05
Windows API  (0) 2023.11.05