【驱动学习】7- DRIVER_OBJECT 驱动对象
概述:驱动对象
DRIVER_OBJECT
结构体说明
DRIVER_OBJECT 结构体
要了解驱动对象,那了解 DRIVER_OBJECT
结构体是必要的。一般来说驱动程序 DriverEntry
入口处都会存在这样一个驱动对象,如下所示:
1 |
|
也就是 PDriver
。该对象内所包含的就是当前所加载驱动自身的一些详细参数,例如驱动大小、驱动标志、驱动名、驱动节等等。每一个驱动程序都会存在这样的一个结构,先看一下微软对其的定义:
1 |
|
如果要获取当前驱动的一些基本信息,就可以通过 DRIVER_OBJECT
的参数来获取就行,相关代码如下所示,其中 IRP_MJ_*
这一系列则是微软的调用号,不同的 RIP 代表着不同的涵义,但一般驱动也就会用到如下这几种调用号。
1 |
|
输出:
1 |
|
遍历当前系统加载的所有驱动程序
DRIVER_OBJECT
对象中的 DriverSection
字段我们完全可以遍历输出当前系统下的所有的驱动程序的具体信息。DriverSection
结构指向了一个 _LDR_DATA_TABLE_ENTRY
结构体,相关定义如下所示:
1 |
|
为了能够遍历出所有的系统驱动,我们需要得到 LDR_DATA_TABLE_ENTRY
指针,通过 PDRIVER_OBJECT->DriverSection
获取。获取到之后通过 pldrt
【驱动学习】7- DRIVER_OBJECT 驱动对象
https://hodlyounger.github.io/2025/01/26/A_OS/Windows/驱动/windows驱动开发教程/【驱动学习】7- DRIVER_OBJECT驱动对象/