《Windows内核安全与驱动开发》阅读笔记 -- 索引目录
《Windows内核安全与驱动开发》 2.3 重要的数据结构
一、驱动对象
- Windows内核采用__的编程方式。Windows内核认为许多东西都是__,比如一个驱动、一个设备、一个文件,甚至其他的一些东西。
- 与应用程序开发不同,Windows内核模块并不生成一个进程,只是填写一组__函数让Windows来调用,而这组__必须符合Windows内核规定。
- Windows中很多组件都拥有自己的__,比如:所有的硬件驱动程序,所有的类驱动(Disk、Cdrom···)、文件系统,以及许多其他的内核组件。
二、设备对象
- Windows应用程序开发都知道,__是唯一可以接收消息的东西。
- 在内核世界中,大部分“消息”都是以__的方式传递,__是唯一可以接收消息的实体,任何一个消息都发送给某个__。
- 一个__对象总是属于一个__对象(驱动/设备)。
- __对象生成多个__对象(驱动/设备),而Windows向__对象发送请求,这些请求如何处理呢?实际上,这些请求被__对象的__所捕获。
- 当Windows内核向一个__发送一个请求时,__对象的__中的某一个会被调用。【NTSTATUS MyDispatch(PDEVICE_OBJECT device,PIRP irp);】
三、请求
- 文件写入等操作最终在内核中都会被__翻译成为__发送到某个__对象。
- 大多数请求以__的形式发送。
- 何为IRP栈空间,一个IRP往往传递到n个__才得以完成,为了保留每个阶段的__变化,我们给每次"中转"都留一个__,用来__。
答案:
一、驱动对象
- 面向对象 对象
- 回调函数 回调函数
- 驱动对象
二、设备对象
- 窗口
- 请求(IRP) 设备对象
- 设备 驱动
- 驱动 设备 驱动 分发函数
- 设备 驱动对象 分发函数
三、请求
- IO管理器 请求(IRP) 设备
- IRP
- 设备 参数 栈空间 保存中间参数