- 55
- 0
- 约2.9万字
- 约 20页
- 2017-12-10 发布于湖北
- 举报
常见的驱动程序设计问题
常见的驱动程序设计问题?
这一章介绍了所有驱动程序开发者都会感兴趣的一些内容,主要包括以下几部分:
?????????? 总结了标准驱动程序例程运行的缺省硬件优先级(IRQL)以及在适当的IRQL上调用支持例程的一些策略
?????????? 关于使用自旋锁的一般策略,这些自旋锁用来同步对驱动程序例程共享的数据或资源的访问
?????????? 关于用内核栈和后备列表分配系统空间内存的一般策略。
?????????? 驱动程序应该怎样处理I/O错误,以及NTSTATUS值是怎样定义的
?????????? 怎样使所有或部分驱动程序映像可分页
?????????? 怎样注册设备接口以使其他内核模式和用户模式的代码可以访问设备
?????????? 怎样避免会影响驱动程序可靠性的的常见问题
这一章还讨论了设备类型决定或设计决定的设计问题,包括下列内容:
?????????? 对最低层设备驱动程序,是驱动程序轮询设备,还是建立一个等待Kernel定义的调度者对象的线程,即是用时间还是用信号量
?????????? 对于DMA或PIO驱动程序,怎样在传输操作期间维护缓存的一致性和数据的完整性
?????????? 对于可删除存储介质设备(removable-media)的驱动程序,怎样处理用户引起的错误(如提供了错误的存储介质或移除了在其上有文件打开的存储介质)
这一章的目录如下:
16.1 管理硬件优先级
16.2 使用自旋锁
16.2.1 为自旋锁和被保护数据提供存储空间
16.2.2 初始化自旋锁
16.2.3 调用使用了自旋锁的支持例程
16.2.4 快速释放自旋锁
16.2.5 使用自旋锁时防止错误或死锁的出现
16.3 轮询设备
16.4 管理内存的使用
16.4.1 使用系统内存
16.4.1.1 访问用户空间内存的驱动程序
16.4.1.2 为部分传输请求建立MDL
16.4.1.3 分配系统空间内存
16.4.1.4 将总线相关(Bus-Relative)的内存空间地址重新映射为虚地址
16.4.2 使用内核栈
16.4.3 使用后备列表(lookaside list)
16.5 对DMA和PIO维护缓存的一致性
16.5.1 在DMA操作期间刷新缓存数据
16.5.2 在PIO操作期间刷新缓存数据
16.6 错误记录和NTSTATUS值
16.6.1 调用IoAllocateErrorLogEntry
16.6.2 填充错误记录包
16.6.3 设置错误记录包中的NTSTATUS值
16.6.4 调用IoWriteErrorLogEntry
16.6.5? 定义新的IO_ERR_XXX
16.6.6 定义私有NTSTATUS常量
16.7 处理可删除存储介质
16.7.1 响应来自文件系统的验证(Check-Verify)请求
16.7.2 通知文件系统可能的存储介质改变
16.7.3 检查设备对象中的标志
16.7.4 在中间层驱动程序中建立IRP
16.8 使设备对应用程序和驱动程序可用
16.8.1 注册设备接口
16.8.2 使设备接口可用和不可用
16.8.3 使用设备接口
16.9 可分页代码和数据
16.9.1 使驱动程序代码可分页
16.9.2 锁住可分页代码或数据
16.9.3对整个驱动程序分页
16.10 常见的驱动程序可靠性问题
16.10.1 缓冲I/O中的错误
16.10.2 引用用户空间地址时的错误
16.10.3 直接I/O中的错误
16.10.4 调用者输入和设备状态的错误
16.10.5 Dispatch例程中的错误
16.10.6 多处理器环境中的错误
16.10.7 处理IRP时的错误
1.1 管理硬件优先级
特定设备或中间层驱动程序例程运行的IRQL决定了它能调用哪些内核模式的支持例程。例如,有些支持例程要求调用者运行在为DISPATCH_LEVEL的IRQL上。其他例程在调用者运行在提高的(raised)IRQL(即高于PASSIVE_LEVEL的IRQL)时不能被安全地调用。
表16.1列出了最常见的标准驱动程序例程被调用的缺省IRQL以及Kernel定义的IRQL值(由低到高)。
表16.1?? 驱动程序例程的缺省IRQL
IRQL(由低到高) 屏蔽掉的中断 运行在此IRQL的支持例程 PASSIVE_LEVEL 无 Dispatch、DriverEntry、AddDevice、Reinitialize、Unload例程、驱动程序创建的线程、工作者线程(work-thread)回调、文件系统驱动程序 DISPATCH_LEVEL DISPATCH_LEVEL和APC_LEVEL中断被屏蔽掉了。设备、时钟和电源错误中断仍可发生 StartIo、Ada
您可能关注的文档
- 带电粒子在匀强磁场中的运动(习题课).ppt
- 带电粒子在电场中的运动(陈乐辉).ppt
- 带着露珠的新闻上课02.ppt
- 带电粒子在静电场中的运动专题.ppt
- 带答案全国寄生虫病防治技能试题库-.docx
- 带螺纹壳体注塑模课程设计PPT.ppt
- 带传动(公开课).ppt
- 常减压装置补充题库(根据生产实际对常减压装置题库进行了补充和重点说明).doc
- 常州龙湖郦城外墙涂料施工方案.doc
- 常丽纳 《咬文嚼字——消灭错别》.ppt
- 人教版九年级英语Unit 4曾害怕课件3a-4c.pdf
- 雅思口语考题回顾:朗阁海外考试研究中心2019年10月10日Part 1考题总结.pdf
- 2026届高三地理一轮复习课件小专题河流袭夺.pptx
- 【名师原创】复习专题5 三角函数 作者:合肥市第八中学 蒲荣飞名师工作室.docx
- 高中数学一轮复习 微专题2 抽象函数.docx
- 高中数学——复习专题4 空间向量与立体几何.docx
- 高中数学一轮复习 微专题3 空间几何体中的截面、轨迹问题.docx
- 高中数学一轮复习 微专题4 空间几何体的最值、范围问题.docx
- 导流洞施工质量通病防治手册.docx
- 江苏省徐州市第一中学、徐市第三中学等五校2026届高三上学期12月月考历史试题含答案.docx
原创力文档

文档评论(0)