Windows驱动开发基础(五)驱动程序的数据结构

本文介绍了Windows驱动开发中的关键数据结构,包括驱动对象(DRIVER_OBJECT)、设备对象(DeviceObject)及其设备扩展。驱动对象包含了设备对象和设备名称等信息,设备对象形成链表,并通过DeviceExtension存储特定设备信息。设备扩展用于存放特殊设备信息,避免使用全局变量以增强函数的可重入性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows驱动开发基础:驱动程序的数据结构。转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/38794405


I/O管理器定义了一些数据结构,这些很重要。


1. 驱动对象(DRIVER_OBJECT)


通过一个typedef 定义的以一个struct:

<span style="font-family:Microsoft YaHei;">typedef struct
{
PDEVICE_OBJECT DeviceObject; //指向驱动程序创建的设备对象</span>
<span style="font-family:Microsoft YaHei;">UNICODE_STRING  Drivername // 驱动名称
PUNICODE_STRING HardwareDatabase; //记录的是设备的硬件数据库名,这里同样用Unicode字符串记录
PFAST_IO_DISPATCH FastIoDispatch;//文件驱动中用到的派遣函数
PDRIVER_INITIALIZE DriverInit;//指向DriverEntry函数的,这是通过IO管理器来建立的。
PDRIVER_STARTIO DriverStartIo;//记录StartIO例程的函数地址,用于串行化操作
PDRIVER_UNLOAD DriverUnload;//指定驱动卸载时所用的回调函数地址
PDRIVER_DISPATCH MajorFunction[IRP_MJ_NUM+1];//指向驱动程序的DispatchXXX函数指针的数组
}DRIVER_OBJECT,*PDRIVER_OBJECT;指向驱动程序的DispatchXXX函数指针的数组</span>

 里面有一些重要的数据结构:


DeviceObject: 设备对象,可能是一个或多个。由程序猿自己创建,驱动程序被卸载的时候,遍历每一个DriverObject并删除;

 

DeviceName:设备名称,保存在Unicode字符串里面  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值