2.3重要的数据结构
2.3.1驱动对象:
Windows内核认为许多东西都是“对象”,比如一个驱动、一个设备、一个文件,甚至其他的一些东西。(采用面对对象的编程方式,但是使用的是C语言)
一个驱动对象代表了一个驱动程序,或者说一个内核模块。
驱动对象的结构如下:
typdef struct _DRIVER_OBJECT {
// 结构的类型和大小
CSHORT Type;
CSHORT Size;
// 设备对象,这里实际上是一个设备对象的链表的开始。因为DeviceObject
// 中有相关的链表信息。阅读下一小节“设备对象”会得到更多的信息
PDEVICE_OBJECT DeviceObject;
...
// 这个内核模块再内核空间中的开始地址和大小
PVOID DriverStart;
ULONG DriverSize;
...
// 驱动的名字
UNICODE_STRING DriverName;
...
// 快速IO分发函数
PFAST_IO_DISPATCH FastIoDispatch;
...
// 驱动的卸载函数