커 널 대상 (Windows 프로 그래 밍)
1. 커 널 대상 은 무엇 입 니까?
모든 커 널 대상 은 하나의 메모리 블록 일 뿐 운영 체제 커 널 에 의 해 분배 되 고 운영 체제 커 널 에 만 접근 할 수 있 습 니 다.이 메모리 블록 은 데이터 구조 로 구성원 들 이 대상 과 관련 된 정 보 를 유지 하고 있다.소수의 구성원 (안전 설명자 와 사용 계수 등) 은 모든 대상 이 있 지만 다른 대부분의 구성원 들 은 서로 다른 유형의 대상 특유 의 것 이다.
응용 프로그램 은 윈도 가 제공 하 는 함 수 를 통 해 커 널 대상 을 조작 합 니 다.커 널 대상 을 만 들 수 있 는 함 수 를 호출 하면 함 수 는 핸들 (handle) 을 되 돌려 주 고 만 든 대상 을 표시 합 니 다.핸들 을 불투명 (opaque) 의 값 으로 상상 할 수 있 습 니 다. 운영 체제 의 신뢰성 을 높이 기 위해 서 이 핸들 값 은 프로 세 스 와 관련 이 있 습 니 다.
1) 사용 계수
커 널 대상 의 소유 자 는 프로 세 스 가 아 닌 운영 체제 커 널 입 니 다.커 널 대상 의 생명 주 기 는 그것 을 만 드 는 과정 에서 길 어 질 수 있 습 니 다.
커 널 대상 마다 사용 계수 (usage) 가 있 습 니 다. count) 운영 체제 커 널 은 현재 몇 개의 프로 세 스 가 이 대상 을 사용 하고 있 는 지 계산 을 통 해 알 수 있 습 니 다.대상 을 처음 만 들 때 사용 계 수 는 1 로 설계 되 었 고 다른 프로 세 스 가 대상 에 접근 할 때 사용 계수 가 증가 하 며 프로 세 스 가 중단 되면 운영 체제 커 널 은 자동 으로 대상 의 사용 계 수 를 줄 이 고 대상 의 사용 계수 가 0 으로 바 뀌 면 운영 체제 커 널 은 대상 을 소각 합 니 다.
2) 커 널 대상 의 안전성
커 널 대상 은 보안 설명자 (security) 를 사용 할 수 있 습 니 다. descriptor, SD) 를 보호 합 니 다.안전 설명 자 는 대상 이 있 는 사람 을 설명 합 니 다.어떤 그룹 과 사용자 가 이 대상 에 접근 하거나 사용 할 수 있 습 니까?그 그룹 과 사용자 들 은 이 대상 에 접근 하 는 것 을 거부 당 했다.
security descriptor
A structure and associated data that contains the security information for a securable object. A security descriptor identifies the object's owner and primary group. It can also contain a DACL that controls access to the object, and a SACL that controls the logging of attempts to access the object.
access-control list
(ACL) A list of security protections that applies to an object. (An object can be a file, process, event, or anything else having a security descriptor.) An entry in an access-control list (ACL) is an accesscontrol entry (ACE). There are two types of access-control list, discretionary and system.
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES;
대상 이 커 널 대상 인지 아 닌 지 를 판단 하려 면 이 대상 을 만 드 는 함 수 를 보 는 것 이 가장 간단 하 다.커 널 대상 을 만 드 는 거의 모든 함수 에는 보안 속성 정 보 를 지정 할 수 있 는 인자 가 있 습 니 다.
2. 프로 세 스 커 널 대상 핸들 표
프로 세 스 가 초기 화 될 때 시스템 에서 핸들 시트 (handle) 를 할당 합 니 다. table)。이 핸들 표 는 커 널 대상 만 사용 할 수 있 으 며 사용자 대상 이나 GDI 대상 에는 적용 되 지 않 습 니 다.문형 표 는 데이터 구조 로 구 성 된 데이터 일 뿐 모든 구 조 는 커 널 대상 의 지침, 방문 마스크 (access) 를 포함한다. mask) 와 일부 표지 (flag).
1) 커 널 대상 만 들 기
프로 세 스 내 스 레 드 가 커 널 대상 을 만 드 는 함 수 를 호출 할 때 커 널 은 이 대상 에 게 메모리 블록 을 할당 하고 초기 화 합 니 다.그리고 커 널 스 캔 프로 세 스 의 핸들 시트 에서 빈 기록 항목 (empty) 을 찾 습 니 다. entry)。시스템 은 커 널 대상 의 정 보 를 프로 세 스 핸들 표 에 저 장 된 구체 적 인 위 치 를 색인 으로 표시 합 니 다. 실제 색인 값 을 얻 으 려 면 핸들 값 을 실제 4 (또는 오른쪽으로 두 자리) 로 나 누 어야 합 니 다.
2) 커 널 대상 닫 기
어떤 방식 으로 커 널 대상 을 만 들 든 클 로 저 핸들 을 호출 하여 시스템 에 사용 대상 이 끝 났 음 을 표시 해 야 합 니 다.핸들 이 유효 하 다 면 시스템 은 커 널 대상 의 데이터 구조의 주 소 를 얻 고 구조 중의 '사용 계수' 구성원 을 점차 줄 일 것 이다.사용 계수 가 0 이 되면 커 널 대상 이 소각 되 고 차지 하 는 메모리 가 방출 된다.
CloseHandle 호출 을 잊 어 버 리 면 프로그램 이 실 행 될 때 커 널 대상 이 유출 될 수 있 습 니 다.그러나 프로 세 스 가 실행 을 중지 하면 운영 체 제 는 이 프로 세 스 가 사용 하 는 모든 자원 이 방출 되 는 것 을 확보 합 니 다. 이것 은 모든 커 널 대상 (사용 계수 가 0 으로 변 하면 커 널 은 이 대상 을 소각 합 니 다), 자원 (GDI 대상 포함) 과 메모리 블록 에 적 용 됩 니 다.
3. 크로스 프로 세 스 경계 공유 커 널 대상
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.