떡밥위키
최근 변경
최근 토론
특수 기능
파일 올리기
작성이 필요한 문서
고립된 문서
고립된 분류
분류가 되지 않은 문서
편집된 지 오래된 문서
내용이 짧은 문서
내용이 긴 문서
차단 내역
RandomPage
라이선스
IP 사용자
216.73.216.107
설정
다크 모드로 전환
로그인
개인정보 처리방침 개정 안내
Microsoft Windows/커널
(r1 문단 편집)
닫기
RAW 편집
미리보기
==== 핸들 ==== 프로세스는 커널 오브젝트(프로세스, 스레드, 이벤트 등)에 직접 접근할 수 없다. 대신 핸들(Handle)을 통해 간접적으로 객체에 접근할 수 있다. 이 핸들들을 모아 관리하는 구조체는 핸들 테이블(Handle Table)이라 부르는데 프로세스마다 가지고 있다. 핸들 테이블에는 핸들 번호와 객체의 실제 주소, 액세스 권한, 참조 횟수 등이 포함되어 있다. 프로세스가 OpenProcess 등으로 객체에 대한 핸들을 생성하고 핸들을 통해 윈도우 객체에 접근하려고 하면 윈도우는 해당 객체의 핸들 테이블을 참조하여 핸들이 있는지, 무슨 권한으로 접근하려는지 등을 체크하여 문제가 없을 경우 프로세스의 요구에 따라 객체를 다루게 된다. Windows API의 객체를 다루는 함수들은 모두 핸들을 요구하고 있다. 그리고 함수마다 요구하는 권한이 다르다. 예를 들어 객체의 정보를 수정하는 함수(SetProcessInformation 등)들은 수정 권한을 요구하며 반대로 객체의 정보를 쿼리하는 함수(NtQueryProcessInformation 등)는 쿼리 권한이 필요하는 식이다. 윈도우는 핸들을 통해 객체에 접근하려는 권한이 해당 핸들이 가지고 있지 않다면 바로 액세스 거부를 때린다. 핸들을 더 이상 사용하지 않을 때에는 CloseHandle로 직접 핸들을 닫아줘야 한다. 그렇게 하지 않으면 핸들은 프로세스가 종료될 때까지 그대로 남겨지게 된다. 물론 프로세스가 종료되면 윈도우는 해당 프로세스의 열려 있는 핸들을 모두 닫아주긴 하다. 핸들 중에서 '의사 핸들'(Pseudo Handle)이라는 것도 존재한다. GetCurrentProcess이나 GetCurrentThread로 반환받은 핸들이 바로 의사 핸들이다. 의사 핸들은 해당 프로세스에서만 사용할 수 있으며 모든 액세스 권한을 가지고 있다. 의사 핸들은 CloseHandle로 닫을 수 없다.
요약
문서 편집을
저장
하면 당신은 기여한 내용을
CC BY-NC-SA 2.0 KR
또는
기타 라이선스 (문서에 명시된 경우)
로 배포하고 기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다. 이
동의는 철회할 수 없습니다.
비로그인 상태로 편집합니다. 로그인하지 않은 상태로 문서 편집을 저장하면, 편집 역사에 본인이 사용하는 IP(216.73.216.107) 주소 전체가 영구히 기록됩니다.
저장
사용자
216.73.216.107
IP 사용자
로그인
회원가입
최근 변경
[불러오는 중...]
최근 토론
[불러오는 중...]