
1. 자료형 (Data type)
| BOOL | Boolean ( True or False) |
| LPSTR | 문자열 위한 32bit 포인터 |
| UNIT | unsigned int 16bit (Win32 32bit) |
| WORD | unsigned int 16bit |
| DWORD | unsigned int 32bit / segment address or offset |
| LONG | signed int 32bit |
| WPARAM | 프로시저에 전달되는 매개변수, 콜백함수 16bit |
| LPARAM | 프로시저에 전달되는 매개변수, 콜백함수 32bit |
| HANDLE | unsigned int / object handle |
| HWND | unsigned int / windows handle |
| HINSTANCE | unsigned int / instance handle |
2. 핸들 (Handle)
2-1. 개요
- 운영체제는 리소스를 안전하게 관리하기 위해 직접 주소를 사용하는 포인터 대신 핸들을 사용.
- 핸들이란 운영체제 내부 리소스의 주소를 정수 (32bit or 64bit)로 치환한 값.
- HANDLE이란 오브젝트의 주소를 나타내는 자료형.
- 일반적 리소스 핸들로 파일 서술자, 네트워크 소켓, 데이터베이스 연결, 프로세스 식별자(PID)등이 있다.
2-2. 특징
- 중복을 허용하지 않는다.
- 운영체제가 발급, 사용자는 사용. (사용자 생성 불가)
- H로 시작하는 접두어를 가진다.
2-3. 핸들, 포인터 비교
- 포인터는 참조 대상의 주소를 갖는 반면, 핸들은 외부 관리 참조를 추상화한 것.
- 핸들은 무효화 시키지 않고 참조 대상이 시스템에 의해 메모리에서 재배치될 수 있게 해준다.
- 간접 참조 여분의층 또한 관리하는 시스템의 동작이 할 수 있는 제어를 증가시킴.
3. ETC
- C 표준 I/O 라이브러리에서 파일 데이터 구조체는 파일 핸들(UNIX에서는 파일 서술자).
- 윈도우 API도 객체를 나타내며, 운영 체제와 사용자 공간과의 통신을 위해 핸들을 사용.