常见内核数据结构.doc
2013-05-22 18:23
225 查看
驱动框架常见数据结构
驱动对象结构 (DRIVER_OBJECT)
每个驱动对象代表一个已加载的内核驱动程序,指向驱动对象结构的指针常常作为DriverEntry, AddDevice, Unload等函数的参数。
驱动对象结构是半透明的(即结构中只有部分域是公开的),其中公开的域包括DeviceObject[指向由此驱动创建 的设备对象], DriverExtension[指向快速i/o函数入口], HardwareDatabase, FastIoDispatch, DriverInit[指向驱动入口点地址(DriverEntry)], DriverStartIo, DriverUnload[指向驱动卸载程序]以及MajorFunction[是一张函数分发表,数组的索引值与IRP_MJ_Xxx相对应].
kd> dt nt!_driver_object
http://blog.csdn.net/denglin_123/article/details/6501738
设备对象结构 (DEVICE_OBJECT)
系统使用设备对象结构来描述一个设备对象。
DriverObject域指向创建此设备对象的驱动程序对象; NextDevice域指向同一个驱动程序创建的下一个设备对象;AttachedDevice域指向绑定到此设备对象上的设备对象; Flags域指定了该设备对象的标记(缓冲读写方式还是直接读写方式);Vpb域指向与此设备对象相关的卷参数块;DeviceExtension域指向设备扩展,设备扩展中的内容由程序设计者自定义,往往用来记录与设备相关的一些信息。
kd> dt nt!_device_object
kd> dt nt!_unicode_string
http://blog.csdn.net/denglin_123/article/details/6501740
进程与线程数据结构
a. 执行体进程块 (EPROCESS)
执行体进程块是一个不透明的数据结构,用来描述一个进程对象。驱动程序可以调用PsGetCurrentProcess函数获取指向当前进程的执行体进程块指针。
kd> dt nt!_EPROCESS
内核进程块 (KPROCESS)
执行体线程块 (ETHREAD)
内核线程块 (K THREAD)
存储系统数据结构
卷参数块(VPB)
文件对象(File_Object)
SCSI请求块(SPB)
网络数据结构
其他一些常见的数据结构
对象结构
任何一个对象都包括固定的对象头和不固定的对象体两部分,对象体的结构由对象类型决定。【类型为文件(FILE)的对象体结构为FILE_OBJECT,而对象头的数据结构是固定的(注意随着系统的不同,对象头的结构也会发生变化)】
kd> dt ntkrpamp !_OBJECT_HEADER
链表结构
Windows内核使用LIST_ENTRY结构组织双向链表
kd> dt nt!_LIST_ENTRY
APC和DPC
PE文件相关结构
基于分发器对象的同步对象结构
内存区对象(SECTION_OBJECT)
其他
驱动对象结构 (DRIVER_OBJECT)
每个驱动对象代表一个已加载的内核驱动程序,指向驱动对象结构的指针常常作为DriverEntry, AddDevice, Unload等函数的参数。
驱动对象结构是半透明的(即结构中只有部分域是公开的),其中公开的域包括DeviceObject[指向由此驱动创建 的设备对象], DriverExtension[指向快速i/o函数入口], HardwareDatabase, FastIoDispatch, DriverInit[指向驱动入口点地址(DriverEntry)], DriverStartIo, DriverUnload[指向驱动卸载程序]以及MajorFunction[是一张函数分发表,数组的索引值与IRP_MJ_Xxx相对应].
kd> dt nt!_driver_object
http://blog.csdn.net/denglin_123/article/details/6501738
设备对象结构 (DEVICE_OBJECT)
系统使用设备对象结构来描述一个设备对象。
DriverObject域指向创建此设备对象的驱动程序对象; NextDevice域指向同一个驱动程序创建的下一个设备对象;AttachedDevice域指向绑定到此设备对象上的设备对象; Flags域指定了该设备对象的标记(缓冲读写方式还是直接读写方式);Vpb域指向与此设备对象相关的卷参数块;DeviceExtension域指向设备扩展,设备扩展中的内容由程序设计者自定义,往往用来记录与设备相关的一些信息。
kd> dt nt!_device_object
kd> dt nt!_unicode_string
http://blog.csdn.net/denglin_123/article/details/6501740
进程与线程数据结构
a. 执行体进程块 (EPROCESS)
执行体进程块是一个不透明的数据结构,用来描述一个进程对象。驱动程序可以调用PsGetCurrentProcess函数获取指向当前进程的执行体进程块指针。
kd> dt nt!_EPROCESS
内核进程块 (KPROCESS)
执行体线程块 (ETHREAD)
内核线程块 (K THREAD)
存储系统数据结构
卷参数块(VPB)
文件对象(File_Object)
SCSI请求块(SPB)
网络数据结构
其他一些常见的数据结构
对象结构
任何一个对象都包括固定的对象头和不固定的对象体两部分,对象体的结构由对象类型决定。【类型为文件(FILE)的对象体结构为FILE_OBJECT,而对象头的数据结构是固定的(注意随着系统的不同,对象头的结构也会发生变化)】
kd> dt ntkrpamp !_OBJECT_HEADER
链表结构
Windows内核使用LIST_ENTRY结构组织双向链表
kd> dt nt!_LIST_ENTRY
APC和DPC
PE文件相关结构
基于分发器对象的同步对象结构
内存区对象(SECTION_OBJECT)
其他
相关文章推荐
- 2.3 常见内核数据结构 : 驱动框架常见数据结构
- Windows内核编程基础篇之常见内核数据结构
- Windows内核常见数据结构(基本类型)
- Windows内核常见数据结构(线程相关)
- Windows内核常见数据结构(进程相关)
- 2.3 常见内核数据结构 : 进程与线程数据结构
- Windows内核常见数据结构(驱动相关)
- Windows内核常见数据结构
- Windows内核常见数据结构(内核对象)
- 2.3 常见内核数据结构 : 存储系统数据结构
- Windows内核常见数据结构(基本类型)
- 2.3 常见内核数据结构 : 网络数据结构
- 2.3 常见内核数据结构 : 其他一些常见的数据结构
- Linux内核常见数据结构及操作——HASH表
- Linux内核常见数据结构及操作
- 常见数据结构总结
- 【数据结构】常见的排序方法的实现以及性能对比
- 常见的几种浏览器内核简单介绍
- Java中常见数据结构:list与map
- linux内核数据结构-顺序存储链表(1)