byidev.com
2023-05-18 16:57:52

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도 객체를 나타내며, 운영 체제와 사용자 공간과의 통신을 위해 핸들을 사용.