"윈도우 커널 보안 및 드라이버 개발"독서 노트 - 색인 디렉토리
"윈도우 커널 보안 및 드라이버 개발"5.1 및 5.2 커널과 응용 프로그램 프로그래밍
하는 생성 제어 장치
- 드라이버가 및 응용 프로그램 통신을 필요로하는 경우, 그것은 첫째 _____를 생성해야합니다.
- ____ ____ 전체 운영 체제의 기본 틀을 구성한다.
- ____ 애플리케이션 층에 노광, 응용 계층은 그 동작 __ 동일한 동작 할 수있다.
- 일반적으로 장치 및 응용 프로그램은 종종 "제어", 그들은 종종 ____라고 커널 드라이버에 사용된다.
- 제어 장치로서, 일반적으로 ____ 요구하고, 일반 장비는 할 수 없습니다.
둘째, 제어 장치 이름 및 심볼 링크
- 이 노출되도록 ____ 다른 프로그램이 통신 오픈하는 제어 장치를 필요로한다.
- 응용 계층 직접 ____하여 장치를 열고 대상이 아닌, 이것은 ____ 응용 계층에 노출 확립해야한다.
- ____ 장치명 프리픽스는 프리픽스는 ____ 심볼 링크 인 _____ 응용 계층 프리픽스에 대한 심볼 링크된다.
셋째, 요청 분포 함수
- 첫번째 파라미터 _____ 번째 인수는 상기 ____ 표준 분포 함수이다.
- 요청 분포 함수를 처리하는 첫 번째 단계는 API 함수를 사용 _____, _____이다.
- ____ 주요 기능 번호를 얻기 위해 사용합니다.
- ____ 주로 출력을 리턴하는 데 제공된다.
- ____이 요청에 대한 기록 완료 상태.
- ____ 요청의 끝.
넷째, 개방 및 폐쇄 장치의 응용 계층
- API 함수를 ____ 사용하여 장치를 엽니 다. ____ 파일의 경로로 경로이지만, 응용 프로그램 계층에서 보면, 관심을 탈출, C 언어의 필요성 ___의 시작입니다.
- ____ API 함수를 사용하여 장치를 끕니다.
다섯째, 디바이스 제어 요청
- CTL_CODE는 ____ 우리가 직접 자신을 생성하기 위해이 매크로를 사용하는 것입니다 할 필요가 매크로입니다.
- CTL_CODE 첫 번째 인수는 ____, 우리가 좋아 모든 하드웨어와 함께, 알 수없는 유형 (FILE_DEVICE_UNKNOWN)로 직접 정의 할 수있다.
- 두번째 파라미터 CTL_CODE ____, ____ 범위이다.
- 세번째 매개 변수는 CTL_CODE METHOD_BUFFERED ____ 입력 / 출력 버퍼 사이 __ __ 복사 될 것이다.
- 데이터가 FILE_WRITE_DATA 따라서 쓸 수 있기 때문에 CTL_CODE 마지막 매개 변수는 ____이다.
- 개폐 장치 이외의 장치를 폐쇄하는 것 외에도, 중간 ____ 전송 요청 프로세스의 사용을 증가.
여섯째, 해당 커널 프로세스
- 제어 요구 처리 장치는, 완료하기 위해 다음과 같은 작업이있을 때 버퍼 장치 제어 요구 __ 형태 인 AssicatedIrp.SystemBuffer 제공된다> irp-이다.
- ____ 가져옵니다.
- 입력 버퍼가있는 경우, 당신은 입력 버퍼 ____와 ____를 받아야합니다.
- 상기 출력 버퍼가 출력 버퍼 및 ____ ____되어야합니다.
- 버퍼 AssociatedIrp.SystemBuffer 전제 그것이 디바이스 제어 요구 ____ 실시 있다는> irp-이다.
- 전용 버퍼 상기 제어 장치는, 상기 입력 및 출력 버퍼는 ____이다하는 ___ 동일하므로, 입력 또는 출력 버퍼가 아니라 상기.
대답
하는 생성 제어 장치
- 장치 개체
- 장치 개체 분포 함수
- 장치 개체 파일
- 제어 장비 개체 (CDO)
- 장치 이름
둘째, 제어 장치 이름 및 심볼 링크
- 이름
- 장치 이름 심볼 링크
- \ 장비 \ [이름] \ ?? \ [심볼릭 링크] \\. \ [심볼릭 링크]
셋째, 요청 분포 함수
- 장치 요청 객체 포인터 IRP
- 현재 스택 공간의 요청을 획득 (현재 스택 위치) IoGetCurrentIrpStackLocation
- irpsp-> MajorFunction
- irp-> IoStatus.Information
- irp-> IoStatus.Status
- IoCompleteRequest
넷째, 개방 및 폐쇄 장치의 응용 계층
- CreateFile에 심볼릭 링크 \\. \
- 하여 CloseHandle
다섯째, 제어 장치 요청
- 장치는 기능 번호를 요청
- 장치 유형
- 이러한 핵심 기능은 디지털 번호를 생성한다 (0x7ff, OXFFFF가]
- 사용자 버퍼 커널
- 운영 권한 필요
- DeviceIoControl을
여섯째, 해당 커널 프로세스
- 포인터 길이 포인터 기능 번호 길이
- 버퍼
- 공유 포인터