※ 아래는 윤성우 뇌를 자극하는 윈도우즈 프로그래밍 한빛미디어(주) 2022년
Chapter08(p.241 ~ 289)를 읽고 정리한 내용입니다.

01 핸들 테이블

커널 오브젝트와 핸들 사이에 핸들 테이블이 존재한다.
이로서 핸들을 참조하여 특정 커널 오브젝트를 가리킬 수 있다.

핸들 테이블은 프로세스별로 독립적이며, 등록되는 순간부터 핸들이라 할 수 있다.
이 핸들을 통해서 커널 오브젝트에 접근이 가능하다.

핸들은 자식 프로세스를 생성하는 과정에서 상속할 수 있다.
핸들이 자식 프로세스에게 상속된다는 말은 부모 프로세스의 핸들 테이블 정보가
자식 프로세스의 핸들 테이블에 복사된다는 뜻이다.

GetCurrentProcess 함수 호출을 통해 얻은 핸들을 가짜 핸들이라 한다.
핸들 테이블에 등록된 핸들값이 아닌, 자기 자신의 프로세스를 가리키기 위한 약속된 상수이기 때문이다.
핸들 테이블에 등록된 핸들을 얻기 위해서는 DuplicateHandle 함수를 사용해야 한다.

02 파이프

이름없는 파이프 : 단방향 통신방식을 취하며,
파이프를 통해서 생성된 핸들을 기반으로 통신하기 때문에 프로세스들 사이에는 관계가 있어야 한다.
이름있는 파이프: 메일 슬롯과 유사하다.
차이점은 브로드캐스팅 방식을 지원하지 않는 대신에 양방향 통신을 지원한다는 점이다.

(참고)
메일 슬롯 : 브로드캐스트 방식의 단방향 통신방식을 취하며,
메일슬롯에 할당된 주소를 기반으로 통신하기 때문에 관계없는 프로세스들 사이에서도 통신 가능

0개의 댓글

Powered by GraphCDN, the GraphQL CDN