"윈도우 커널 보안 및 드라이버 개발"5.1 및 5.2 커널과 응용 프로그램 프로그래밍

"윈도우 커널 보안 및 드라이버 개발"독서 노트 - 색인 디렉토리

"윈도우 커널 보안 및 드라이버 개발"5.1 및 5.2 커널과 응용 프로그램 프로그래밍

하는 생성 제어 장치

  1. 드라이버가 및 응용 프로그램 통신을 필요로하는 경우, 그것은 첫째 _____를 생성해야합니다.
  2. ____ ____ 전체 운영 체제의 기본 틀을 구성한다.
  3. ____ 애플리케이션 층에 노광, 응용 계층은 그 동작 __ 동일한 동작 할 수있다.
  4. 일반적으로 장치 및 응용 프로그램은 종종 "제어", 그들은 종종 ____라고 커널 드라이버에 사용된다.
  5. 제어 장치로서, 일반적으로 ____ 요구하고, 일반 장비는 할 수 없습니다.

둘째, 제어 장치 이름 및 심볼 링크

  1. 이 노출되도록 ____ 다른 프로그램이 통신 오픈하는 제어 장치를 필요로한다.
  2. 응용 계층 직접 ____하여 장치를 열고 대상이 아닌, 이것은 ____ 응용 계층에 노출 확립해야한다.
  3. ____ 장치명 프리픽스는 프리픽스는 ____ 심볼 링크 인 _____ 응용 계층 프리픽스에 대한 심볼 링크된다.

셋째, 요청 분포 함수

  1. 첫번째 파라미터 _____ 번째 인수는 상기 ____ 표준 분포 함수이다.
  2. 요청 분포 함수를 처리하는 첫 번째 단계는 API 함수를 사용 _____, _____이다.
  3. ____ 주요 기능 번호를 얻기 위해 사용합니다.
  4. ____ 주로 출력을 리턴하는 데 제공된다.
  5. ____이 요청에 대한 기록 완료 상태.
  6. ____ 요청의 끝.

넷째, 개방 및 폐쇄 장치의 응용 계층

  1. API 함수를 ____ 사용하여 장치를 엽니 다. ____ 파일의 경로로 경로이지만, 응용 프로그램 계층에서 보면, 관심을 탈출, C 언어의 필요성 ___의 시작입니다.
  2. ____ API 함수를 사용하여 장치를 끕니다.

다섯째, 디바이스 제어 요청

  1. CTL_CODE는 ____ 우리가 직접 자신을 생성하기 위해이 매크로를 사용하는 것입니다 할 필요가 매크로입니다.
  2. CTL_CODE 첫 번째 인수는 ____, 우리가 좋아 모든 하드웨어와 함께, 알 수없는 유형 (FILE_DEVICE_UNKNOWN)로 직접 정의 할 수있다.
  3. 두번째 파라미터 CTL_CODE ____, ____ 범위이다.
  4. 세번째 매개 변수는 CTL_CODE METHOD_BUFFERED ____ 입력 / 출력 버퍼 사이 __ __ 복사 될 것이다.
  5. 데이터가 FILE_WRITE_DATA 따라서 쓸 수 있기 때문에 CTL_CODE 마지막 매개 변수는 ____이다.
  6. 개폐 장치 이외의 장치를 폐쇄하는 것 외에도, 중간 ____ 전송 요청 프로세스의 사용을 증가.

여섯째, 해당 커널 프로세스

  1. 제어 요구 처리 장치는, 완료하기 위해 다음과 같은 작업이있을 때 버퍼 장치 제어 요구 __ 형태 인 AssicatedIrp.SystemBuffer 제공된다> irp-이다.
    1. ____ 가져옵니다.
    2. 입력 버퍼가있는 경우, 당신은 입력 버퍼 ____와 ____를 받아야합니다.
    3. 상기 출력 버퍼가 출력 버퍼 및 ____ ____되어야합니다.
  2. 버퍼 AssociatedIrp.SystemBuffer 전제 그것이 디바이스 제어 요구 ____ 실시 있다는> irp-이다.
  3. 전용 버퍼 상기 제어 장치는, 상기 입력 및 출력 버퍼는 ____이다하는 ___ 동일하므로, 입력 또는 출력 버퍼가 아니라 상기.

 


대답

하는 생성 제어 장치

  1. 장치 개체
  2. 장치 개체 분포 함수
  3. 장치 개체 파일
  4. 제어 장비 개체 (CDO)
  5. 장치 이름

둘째, 제어 장치 이름 및 심볼 링크

  1. 이름
  2. 장치 이름 심볼 링크
  3. \ 장비 \ [이름] \ ?? \ [심볼릭 링크] \\. \ [심볼릭 링크]

셋째, 요청 분포 함수

  1. 장치 요청 객체 포인터 IRP
  2. 현재 스택 공간의 요청을 획득 (현재 스택 위치) IoGetCurrentIrpStackLocation
  3. irpsp-> MajorFunction
  4. irp-> IoStatus.Information
  5. irp-> IoStatus.Status
  6. IoCompleteRequest

넷째, 개방 및 폐쇄 장치의 응용 계층

  1. CreateFile에 심볼릭 링크 \\. \
  2. 하여 CloseHandle

다섯째, 제어 장치 요청

  1. 장치는 기능 번호를 요청
  2. 장치 유형
  3. 이러한 핵심 기능은 디지털 번호를 생성한다 (0x7ff, OXFFFF가]
  4. 사용자 버퍼 커널
  5. 운영 권한 필요
  6. DeviceIoControl을

여섯째, 해당 커널 프로세스

  1. 포인터 길이 포인터 기능 번호 길이
  2. 버퍼
  3. 공유 포인터

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

추천

출처www.cnblogs.com/onetrainee/p/12003155.html