내 핵 대상

2361 단어
widows 핵심 프로 그래 밍 에 대해 서 는 핵심 명사 인 커 널 대상 을 깊이 이해 해 야 합 니 다.그럼 다음 몇 마디 부터 말씀 드 리 겠 습 니 다.
 1. 커 널 대상 은 무엇 입 니까?
커 널 대상 은 커 널 에서 분 배 된 메모리 블록 일 뿐 이 커 널 에서 만 접근 할 수 있 습 니 다.이 메모리 블록 은 데이터 구조 로 구성원 들 이 대상 의 각종 정 보 를 유지 하 는 것 을 책임 진다.일부 데이터 구성원 (예 를 들 어 안전성 설명자, 사용 계수 등) 은 모든 대상 유형 에서 같 지만 대부분의 데이터 구성원 은 특정한 대상 유형 에 속한다.예 를 들 어 프로 세 스 대상 은 프로 세 스 I D, 기본 우선 순위, 종료 코드 가 있 고 파일 대상 은 바이트 변위, 공유 모드, 열기 모드 가 있 습 니 다.
2. 어떤 커 널 대상 이 있 습 니까?
다음: 액세스 기호 대상, 이벤트 대상, 파일 대상, 파일 맵 대상, I / O 완료 포트 대상, 작업 대상, 사서함 대상, 상호 배척 대상, 파이프 대상, 프로 세 스 대상, 커서 대상, 스 레 드 대상 과 대기 타이머 대상 등.이 대상 들 은 모두 호출 함 수 를 통 해 만 든 것 이다.
커 널 대상 의 데이터 구 조 는 커 널 에 만 접근 할 수 있 기 때문에 응용 프로그램 은 메모리 에서 이 데이터 구 조 를 찾 아 내용 을 직접 바 꿀 수 없습니다.Microsoft 는 커 널 대상 구조 가 상태 일 치 를 유지 하도록 하기 위해 이 제한 조건 을 규정 했다.이 제한 은 Microsoft 로 하여 금 어떠한 응용 프로그램 도 파괴 하지 않 고 이 구조 에 데이터 구성원 을 추가, 삭제, 수정 할 수 있 게 한다.
커 널 대상 을 만 드 는 함 수 를 호출 할 때 이 함 수 는 대상 을 표시 하 는 핸들 을 되 돌려 줍 니 다.운영 체 제 를 더욱 튼튼 하 게 만 들 기 위해 서 는 프로 세 스 와 밀접 한 관 계 를 가진다.따라서 이 핸들 값 을 다른 프로 세 스 의 스 레 드 에 전달 하면 다른 프로 세 스 가 프로 세 스 의 핸들 값 을 사용 하 는 호출 이 실 패 됩 니 다.여러 프로 세 스 에서 커 널 대상 을 공유 하려 면 일정한 메커니즘 을 통 해
대상 핸들 의 계승 성, 이름 대상, 대상 핸들 복사.
 
커 널 대상 을 제외 하고 메뉴, 창, 마우스 커서, 브러시, 글꼴 등 다른 유형의 대상 도 사용 할 수 있 습 니 다.이 대상 들 은 커 널 대상 이 아 닌 사용자 대상 이나 그래 픽 장치 인터페이스 (GDI) 대상 에 속한다.
 
당초 한 대상 이 커 널 대상 에 속 하 는 지 확인 하려 면 가장 쉬 운 방법 은 이 대상 을 만 드 는 데 사용 되 는 함 수 를 관찰 하 는 것 이 었 다.커 널 대상 을 만 드 는 모든 함 수 는 거의 하나의 매개 변수 가 있 습 니 다. 보안 속성 을 설정 하 는 데 사용 할 수 있 습 니 다 (windows 노트 - 커 널 대상 의 안전성 을 참고 하 십시오). 
커 널 대상 을 만 드 는 데 사용 할 함수 들 을 보 여 줍 니 다.
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,
DWORD dwStackSize,
PTHREAD_START_ROUTINE pfnStartAddr,
PVOID pvParam,
DWORD dwCreationFlags,
PDWORD pdwfhreadId);

HANDLE CreateFile(
PCTSTR pszFileName,
DWORD dwDesiredAccebS,
DWORD dwShareMode,
PSECURITY_ATTRIBUTES psa,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttnbutes,
HANDEE hTemplateFile);

HANDLE CreateFileMapping(
HANDLE hFile,
PSECURITY_ATTRIBUTES psa,
DWORD flProtect,
DWORD dwMdximumSizcHigh,
DWORD dwMaximumSizeLow,
PCTSTR pszName);

HANDLE CreateSemaphore(
PSECURITY_ATTRIBUTES psa,
LONG lInitialCount,
LONG lMaximumCount,
PCTSTR pszName);


좋은 웹페이지 즐겨찾기