Windows驱动2. 驱动对象和设备对象
驱动对象和设备对象
驱动入口函数
1 |
|
驱动对象 DRIVER_OBJECT
*PDRIVER_OBJECT
操作系统使用 DEVICE_OBJECT 结构来表示设备对象。 设备对象表示驱动程序处理 I/O 请求的逻辑、虚拟或物理设备。
— MSDN
这里的设备范围很广, 除了物理设备外, 系统资源(内存管理, 进程, 线程管理) 也可以视作设备对象.
操作都是由设备完成的, 驱动负责和设备进行通信, 通过设备对象来完成.
类型 | 名称 | 描述 | 备注 |
---|---|---|---|
CSHORT | Type | 驱动对象类型 | |
CSHORT | Size | 驱动对象大小 | |
PDEVICE_OBJECT | DeviceObject | 设备对象 | 一个驱动程序对应多个设备对象 |
ULONG | Flags | 驱动对象标志 | |
PVOID | DriverStart | 驱动程序入口地址 | |
ULONG | DriverSize | 驱动程序大小 | |
PVOID | DriverSection | 驱动链表 | 整个系统里驱动的链表管理 |
PDRIVER_EXTENSION | DriverExtension | 驱动扩展 | |
UNICODE_STRING | DriverName | 驱动名 | |
UNICODE_STRING | HardwareDatabase | 硬件数据库 | |
PFAST_IO_DISPATCH | FastIoDispatch | 快速IO分发 | |
PDRIVER_INITIALIZE | DriverInit | 驱动初始化 | |
PDRIVER_STARTIO | DriverStartIo | 驱动开始IO | |
PDRIVER_UNLOAD | DriverUnload | 驱动卸载 | |
PDRIVER_DISPATCH | MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1] | 驱动主要功能 |
创建设备对象 IoCreateDevice
1 |
|
Windows驱动2. 驱动对象和设备对象
https://simonkimi.githubio.io/2024/08/01/Windows驱动2-驱动对象和设备对象/