Submit Search
Upload
设备驱动深度测试 下
•
0 likes
•
81 views
F
Fan Su
Follow
学习使用Verifier对Windows驱动程序进行测试。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 11
Download now
Download to read offline
Recommended
Hp dl380 g7测试结果报告 - 20100823
Hp dl380 g7测试结果报告 - 20100823
Jinrong Ye
Continuous integration
Continuous integration
netdbncku
分布式系统测试实践
分布式系统测试实践
drewz lin
盛大游戏运维体系
盛大游戏运维体系
Ken Liu
盛大游戏运维体系
盛大游戏运维体系
Ken Liu
敏捷软件测试之简介
敏捷软件测试之简介
Yi Xu
2012上海chinatest演讲 从开发看测试,从测试看开发
2012上海chinatest演讲 从开发看测试,从测试看开发
drewz lin
测试驱动的前端开发初探
测试驱动的前端开发初探
hua qiu
Recommended
Hp dl380 g7测试结果报告 - 20100823
Hp dl380 g7测试结果报告 - 20100823
Jinrong Ye
Continuous integration
Continuous integration
netdbncku
分布式系统测试实践
分布式系统测试实践
drewz lin
盛大游戏运维体系
盛大游戏运维体系
Ken Liu
盛大游戏运维体系
盛大游戏运维体系
Ken Liu
敏捷软件测试之简介
敏捷软件测试之简介
Yi Xu
2012上海chinatest演讲 从开发看测试,从测试看开发
2012上海chinatest演讲 从开发看测试,从测试看开发
drewz lin
测试驱动的前端开发初探
测试驱动的前端开发初探
hua qiu
Test driven-frontend-develop
Test driven-frontend-develop
fangdeng
Log experience
Log experience
宗志 陈
Qa engineer training
Qa engineer training
ychw365
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
jalamar
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
LetAgileFly
06.wls ts
06.wls ts
Meng He
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
bj_qa
国内主流WAF测评报告
国内主流WAF测评报告
WASecurity
Appserv setup
Appserv setup
Ht Wang
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen
Xpp
Xpp
drewz lin
试玩前端测试的前因后果
试玩前端测试的前因后果
hahaxiaolaohu
试玩前端测试的前因后果
试玩前端测试的前因后果
Zhicheng Wang
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
Gelis Wu
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Shuyong Lin
Duannian agile
Duannian agile
d0nn9n
敏捷测试中的工具实现
敏捷测试中的工具实现
drewz lin
Leverage virtualization in software test
Leverage virtualization in software test
drewz lin
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
drewz lin
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
Max Lai
More Related Content
Similar to 设备驱动深度测试 下
Test driven-frontend-develop
Test driven-frontend-develop
fangdeng
Log experience
Log experience
宗志 陈
Qa engineer training
Qa engineer training
ychw365
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
jalamar
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
LetAgileFly
06.wls ts
06.wls ts
Meng He
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
bj_qa
国内主流WAF测评报告
国内主流WAF测评报告
WASecurity
Appserv setup
Appserv setup
Ht Wang
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen
Xpp
Xpp
drewz lin
试玩前端测试的前因后果
试玩前端测试的前因后果
hahaxiaolaohu
试玩前端测试的前因后果
试玩前端测试的前因后果
Zhicheng Wang
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
Gelis Wu
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Shuyong Lin
Duannian agile
Duannian agile
d0nn9n
敏捷测试中的工具实现
敏捷测试中的工具实现
drewz lin
Leverage virtualization in software test
Leverage virtualization in software test
drewz lin
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
drewz lin
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
Max Lai
Similar to 设备驱动深度测试 下
(20)
Test driven-frontend-develop
Test driven-frontend-develop
Log experience
Log experience
Qa engineer training
Qa engineer training
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
06.wls ts
06.wls ts
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
国内主流WAF测评报告
国内主流WAF测评报告
Appserv setup
Appserv setup
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Xpp
Xpp
试玩前端测试的前因后果
试玩前端测试的前因后果
试玩前端测试的前因后果
试玩前端测试的前因后果
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Duannian agile
Duannian agile
敏捷测试中的工具实现
敏捷测试中的工具实现
Leverage virtualization in software test
Leverage virtualization in software test
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
设备驱动深度测试 下
1.
设备驱动深度测试 – 下 Windows
10 Upgrade Ready Part-9 苏繁 | 2017.11
2.
内容 • 什么是驱动程序验证器(Driver Verifier) •
驱动程序验证器功能 • 在哪里下载驱动程序验证器 • 何时使用驱动程序验证器 • 如何启动和控制驱动程序验证器 • 如何调试驱动程序验证器冲突
3.
什么是驱动程序验证器(Driver Verifier) • 驱动程序验证器可监视Windows内核模式驱动程序和图形驱动程序, 以检测可能损坏系统的非法函数调用或操作。 •
驱动程序验证器可以将Windows驱动程序置于各种压力和测试中,以 找到不正确的行为。 • 可以同时在多个驱动程序上运行驱动程序验证器,或者一次在一个驱 动程序上。 • 可以配置要运行的测试,允许通过强压力负载或精简的试验来测试驱 动程序。
4.
驱动程序验证器功能 • 池分配 – 尝试从特殊池中分配一个驱动程序的所有池配额。此驱动程序的配额是由“拒绝访问”权限分离和限定,而不是与系统的其他部分共享池配额。此 功能可以确定驱动程序的池配额是否超出了其应得的份额,进而导致系统损坏和不稳定。当您启用此功能并且目标计算机拥有足够的物理和虚拟 内存时,该驱动程序的所有配额将自动重定向到特殊池。 •
提供极限内存压力 – 可以为特定驱动程序提供极限内存压力,而不影响其他驱动程序(不管系统内存有多大)。使用下面的方法可以做到这一点:通知内存管理,将 该驱动程序的所有可分页代码和数据以及系统页面缓冲池、代码和数据设为无效。这样,您就可以检测到错误地持有旋转锁或引发 IRQL 的驱动 程序,并随后获得对分页代码或数据的访问权限。可以使用“极限内存压力”来检测一些间歇性的问题并找出原因。 • 参数验证 – 驱动程序调用的所有旋转锁、IRQL 和池分配都接受自动参数验证。 • 池分配注入失败 – 如果驱动程序没有将池分配标记为 MUST_SUCCEED,池分配可能会被随机取消,以确保该驱动程序可以正确地处理出现的内存不足情况。 • 要释放的池 – 检查所有要释放的池,确保在此池分配中没有挂起的计时器,因为这会导致系统崩溃的原因更加难于查找。 • 池泄漏检测 – 系统自动跟踪驱动程序的所有池分配。在卸载驱动程序时,如果没有释放任何分配,就会执行错误检查。随后,您可以使用 !verifier 3 内核调试 程序命令来显示未释放的所有配额。也可以在卸载前使用此命令,查看驱动程序在任一时刻的未定分配。 • 驱动程序卸载检查 – 执行驱动程序卸载检查的目的是为了找出那些已卸载但没有清除所用资源(这样就增加了在驱动程序卸载后不久即开始检查系统错误的可能性) 的驱动程序。驱动程序无法删除的资源包括搁置资源的列表、挂起的延迟过程调用 (DPC)、工作线程、队列、计时器和其他资源。 • I/O验证程序 – 如果使用验证程序工具或 VerifyDriverLevel 注册表项打开“I/O 验证程序”标志(有关更多信息,请参考本文“启用驱动程序验证”一节),就会打开 某些 I/O 管理器验证。
5.
在哪里下载驱动程序验证器 • 驱动程序验证器无需额外下载 • 自Windows
2000开始内置于系统之中 • 驱动程序验证器位于 %windir%system32目录中 • 支持图形界面和命令行 • Verifier.exe • 注意: – 驱动程序验证器可能导致计算机崩溃 – 应只在用于测试和调试的计算机上运行 – 必须为管理员权限 – Windows 10 S 不包含该程序
6.
何时使用驱动程序验证器 • 驱动程序开发阶段 • 驱动程序测试阶段 •
使用驱动程序验证器来诊断和调试计算机崩溃
7.
如何启动和控制驱动程序验证器 • 以管理员身份运行命令verifier.exe • 选择一个任务 –
创建标准设置 – 创建自定义设置 – 删除现有设置 – 显示现有设置 – 显示当前经过验证的驱动程序信 息
8.
如何启动和控制驱动程序验证器 • 选择要验证的驱动程序 – 自动选择未经签名的驱动程序 –
自动选择为旧版Windows建立的 驱动程序 – 自动选择这台计算机上安装的 所有驱动程序 – 从一个列表选择驱动程序 • Verifier /standard /driver myDriver.sys • Verifier /reset • Verifier /querysettings • Verifier /query
9.
如何启动和控制驱动程序验证器 • 自定义设置 – 特殊池 •
当此选项处于活动状态时, 驱动程序验证器将从一个特殊的池中分配大多数驱动程序的内存请求。对于内存溢出、内存不足和释放后访 问的内存, 将监视此特殊池。 – 强制IRQL检查 • 当此选项处于活动状态时, 驱动程序验证器会通过使页代码无效而对驱动程序施加极大的内存压力。如果驱动程序尝试以错误的 IRQL 访 问分页内存, 或者在持有自旋锁定时, 驱动程序验证器将检测到此行为。 – 随机低资源模拟 – 池跟踪 • 当此选项处于活动状态时, 驱动程序验证器将检查该驱动程序在卸载时是否释放了其所有内存分配。这将显示内存泄漏。 – I/O验证 • 当此选项处于活动状态时, 驱动程序验证器从一个特殊的池中分配驱动程序的 irp, 并监视驱动程序的 i/o 处理。这会检测到 i/o 例程的非 法使用或不一致。 – 死锁检测 • 当此选项处于活动状态时, 驱动程序验证器将监视驱动程序使用的自旋锁定、互斥锁和快速互斥锁。这将检测驱动程序的代码是否有可 能在某一时刻导致死锁。 – DMA检查 • 当此选项处于活动状态时, 驱动程序验证器将监视该驱动程序对 DMA 例程的使用。这将检测到 DMA 缓冲区、适配器和映射寄存器的不 当使用。 – 安全性检查 – 强制挂起I/O请求 – IRP日志 – 杂项检查 • 当此选项处于活动状态时, 驱动程序验证器将查找驱动程序崩溃的常见原因, 如释放内存的处理不当。 – 堆栈的固定MDL检查 – 驱动程序的固定MDL检查 – Power框架延迟模糊处理 – 端口/微型端口接口检查 – DDI兼容性检查 – 系统低资源模拟 – DDI兼容性检查(额外) – NDIS/WLAN验证 – 内核同步延迟模糊处理 • 此选项随机线程调度, 以帮助检测驱动程序中的并发 bug。 – VM开关验证 – 代码完整性检查
10.
常见的驱动程序验证器冲突 • IRQL_NOT_LESS_OR_EQUAL 0xA •
PAGE_FAULT_IN_NONPAGED_AREA 0x50 • PAGE_FAULT_IN_NONPAGED_AREA 0x50 • ATTEMPTED_WRITE_TO_READONLY_MEMORY 0xBE • SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION 0xC1 • DRIVER_VERIFIER_DETECTED_VIOLATION 0xC4 • DRIVER_CAUGHT_MODIFYING_FREED_POOL 0xC6 • TIMER_OR_DPC_INVALID 0xC7 • DRIVER_VERIFIER_IOMANAGER_VIOLATION 0xC9
11.
调试驱动程序验证器冲突
Download now