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字符串里面