Windows驱动开发(6) - DRIVER_OBJECT结构体
来源:互联网 发布:邮箱的域名是什么 编辑:程序博客网 时间:2024/05/21 22:49
Windows驱动开发(6) - DRIVER_OBJECT结构体
typedef struct _DRIVER_OBJECT { CSHORT Type; CSHORT Size; PDEVICE_OBJECT DeviceObject; ULONG Flags; PVOID DriverStart; ULONG DriverSize; PVOID DriverSection; PDRIVER_EXTENSION DriverExtension; UNICODE_STRING DriverName; PUNICODE_STRING HardwareDatabase; PFAST_IO_DISPATCH FastIoDispatch; PDRIVER_INITIALIZE DriverInit; PDRIVER_STARTIO DriverStartIo; PDRIVER_UNLOAD DriverUnload; PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];} DRIVER_OBJECT;typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
PDEVICE_OBJECT DeciveObject:
【驱动程序】创建的指向【设备对象】的指针。当驱动成功调用IoCreateDevice
时,这个成员变量会自动更新。驱动程序可以使用这个成员变量和DEVICE_OBJECT
的成员变量NextDevice
逐步访问当前驱动程序创建的【设备对象】列表。PDRIVER_EXTENSION DriverExtension:
指向【Driver Extension】的指针。【Driver Extension】的唯一的一个可以访问的成员变量是DriverExtension->AddDevice
,驱动程序的【DriverEntry
例程】存储在驱动程序的【AddDevice
例程】中。PUNICODE_STRING HardwareDatabase:
指向【\Registry\Machine\Hardware
】路径的指针,他是注册表的硬件配置信息;PFASE_IO_DISPATCH FastIoDispatch:
指向【驱动的 FAST I/O入口点】的结构体的指针。只有FSDs和网络传输驱动使用这个成员变量。PDRIVER_INITIALIZE DriverInit:
【DriverEntry
】例程的入口点,被【I/O管理器】调用;PDRIVER_STARTIO DriverStartIo:
驱动程序的【StartIo例程】的入口点。如果有【StartIo例程】,他是在驱动程序初始化时被【DriverEntry例程】设置。如果没有,这个成员变量被设置为NULL.PDRIVER_UNLOAD DriverUnload:
驱动程序的【Unload 例程】的入口点。如果有【Unload 例程】,他是在驱动程序初始化时被【DriverEntry例程】设置。如果没有,这个成员变量被设置为NULL.PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]:
由驱动程序的【DispatchXxx 例程的入口点】集合构成的数组 组成的派遣表。这个数组的索引值是IRP_MJ_Xxx ,【IRP_MJ_Xxx】描述每一个【IRP主功能代码】。每个驱动必须为当前驱动程序所处理的IRP_MJ_Xxx在这个IRP_MJ_Xxx数组中设置入口点。- IRP_MJ_CLEANUP:在关闭设备时,取消挂起的IRP,CloseHandle
- IRP_MJ_CLOSE:关闭文件句柄CloseHandle
- IRP_MJ_CREATE:打开设备CreateFile
- IRP_MJ_DEVICE_CONTROL:对用户模式或内核模式客户程序可用的控制操作
- IRP_MJ_FILE_SYSTEM_CONTROL:文件系统控制
- IRP_MJ_FLUSH_BUFFERS:写输入缓冲区或丢弃输入缓冲区
- IRP_MJ_INTERNAL_DEVICE_CONTROL:只对内核模式客户程序可用的控制操作
- IRP_MJ_PNP:即插即用管理
- IRP_MJ_POWER:电源管理
- IRP_MJ_QUERY_INFORMATION:得到信息
- IRP_MJ_READ:读取数据
- IRP_MJ_SET_INFORMATION:设置信息
- IRP_MJ_SHUTDOWN:系统关闭
- IRP_MJ_SYSTEM_CONTROL:系统管理与测试
- IRP_MJ_WRITE:写数据
- Windows驱动开发(6) - DRIVER_OBJECT结构体
- 驱动对象结构DRIVER_OBJECT
- DRIVER_OBJECT结构体
- DRIVER_OBJECT,DEVICE_OBJECT 结构体分析
- DRIVER_OBJECT结构
- windows驱动开发DeviceIoControl传结构体
- Windows驱动开发(7) - DEVICE_OBJECT结构体
- Windows驱动开发(9) - IRP结构体
- 《Windows NT FileSystem Internals》学习笔记之DRIVER_OBJECT对象结构
- 驱动对象(DRIVER_OBJECT)
- 驱动对象(DRIVER_OBJECT)
- 驱动对象(DRIVER_OBJECT)
- Windows驱动开发(1) - 驱动程序结构
- DRIVER_OBJECT
- DRIVER_OBJECT
- DRIVER_OBJECT
- Windows 驱动开发 - 6
- 通过暴搜DRIVER_OBJECT枚举驱动
- 100个常用的原生JavaScript函数
- Notepad++使用心得和特色功能介绍
- 四则运算之加减法
- Hbase LSM树
- 【辅助算法】整体二分
- Windows驱动开发(6) - DRIVER_OBJECT结构体
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- 基于Hadoop的K-means聚类算法的实现
- tarjan模板(缩点,求有向图强连通分量)
- http://www.ezlippi.com/blog/2014/12/c-open-project.html
- 网址的正则表达式
- MAC系统下命令获取IP地址
- javaweb学习总结(三十)——EL函数库
- KMP 算法实现