正在加载图片...
211 Driver verifier的能力 Driver Verifier有两种能力:一种是一直起作用,另一种只有被选择时才起作用 以下是对 Driver verifier所有能力的描述 ■2.1.1.1自动检查 这些是一直起作用的功能,比如IRQL和内存例程的检查,检查定时器检查释放的内存池, 检查驱动程序的正确卸载。 21.1.2特别内存池 这个功能使用了一个特别池来测试内存的上溢和下溢,及在内存释放之后的访问。 ■2.1.1.3强迫IRQL检查 这个功能给驱动程序极端的内存压力来揭示内存分页的故障。 2.1.1.4低资源模拟 这个功能注入随机分配错误和其他被拒决的请求来测试驱动程序在低内存状况下的响应。 2.1.1.5内存池跟踪 这个功能检查当驱动程序被卸载时所有内存分配已经释放。 ■2.1.1.6I/O检查 这个功能监视驱动程序IO对非法或不一致的行为的处理。 21.1.1自动检查 不论 Driver verifier检查一个或多个驱动程序,它将执行以下功能,这些功能不受任何 Driver Verifier选项的允许和禁止之影响。 IRQL和内存例程的检查 Driver verifier为下面被禁止的功能而监视所选择的驱动程序。 通过调用 KeLowerIrql提高IRQL 通过调用 KeRaiselrql降低IRQL 零内存分配请求 在 APC LEVER之上的IRQL分配和释放分页池 在 DIPATCH LEVER之上的IRQL分配和释放非分页池 尝试释放一个没有从前面的分配里返回的地址 尝试释放一个已被释放的地址。 ■在 APC LEⅤER之上的在IRQL获取和释放一个快速的互斥体 ■在IRQL而非在 DIPATCH LEⅤER之上获取和释放一个自旋锁 双倍释放一个自旋锁 指定一非法或随机(未初始化的)参数给任一API。 如果 Driver verifier没有运行,在所有状况下,这些故障不大可能会引起立即的系统崩溃,如 果以上任何故障发生,则 Driver verifier监视驱动程序的行为并发布错误检测αxC4。(参看微软调 试程序文档的使用来获得错误检查参数。) 检查被释放的内存池定时器 Driver verifier检查所有被检查驱动程序所释放的内存池,如果任何定时器保留在该池里,发 布错误检测0xC7。(遗忘的定时器能导致最终系统崩溃,这是最难考虑到的。)5 2.1.1 Driver Verifier 的能力 Driver Verifier 有两种能力:一种是一直起作用,另一种只有被选择时才起作用。 以下是对 Driver Verifier 所有能力的描述: ◼ 2.1.1.1 自动检查 这些是一直起作用的功能,比如 IRQL 和内存例程的检查,检查定时器检查释放的内存池, 检查驱动程序的正确卸载。 ◼ 2.1.1.2 特别内存池 这个功能使用了一个特别池来测试内存的上溢和下溢,及在内存释放之后的访问。 ◼ 2.1.1.3 强迫 IRQL 检查 这个功能给驱动程序极端的内存压力来揭示内存分页的故障。 ◼ 2.1.1.4 低资源模拟 这个功能注入随机分配错误和其他被拒决的请求来测试驱动程序在低内存状况下的响应。 ◼ 2.1.1.5 内存池跟踪 这个功能检查当驱动程序被卸载时所有内存分配已经释放。 ◼ 2.1.1.6 I/O 检查 这个功能监视驱动程序 I/O 对非法或不一致的行为的处理。 2.1.1.1 自动检查 不论 Driver Verifier 检查一个或多个驱动程序,它将执行以下功能,这些功能不受任何 Driver Verifier 选项的允许和禁止之影响。 IRQL 和内存例程的检查 Driver Verifier 为下面被禁止的功能而监视所选择的驱动程序。 ◼ 通过调用 KeLowerIrql 提高 IRQL ◼ 通过调用 KeRaiseIrql 降低 IRQL ◼ 零内存分配请求 ◼ 在 APC_LEVER 之上的 IRQL 分配和释放分页池 ◼ 在 DIPATCH_LEVER 之上的 IRQL 分配和释放非分页池 ◼ 尝试释放一个没有从前面的分配里返回的地址。 ◼ 尝试释放一个已被释放的地址。 ◼ 在 APC_LEVER 之上的在 IRQL 获取和释放一个快速的互斥体 ◼ 在 IRQL 而非在 DIPATCH_LEVER 之上获取和释放一个自旋锁 ◼ 双倍释放一个自旋锁 ◼ 指定一非法或随机(未初始化的)参数给任一 API。 如果 Driver Verifier 没有运行,在所有状况下,这些故障不大可能会引起立即的系统崩溃,如 果以上任何故障发生,则 Driver Verifier 监视驱动程序的行为并发布错误检测 0xC4。(参看微软调 试程序文档的使用来获得错误检查参数。) 检查被释放的内存池定时器 Driver Verifier 检查所有被检查驱动程序所释放的内存池,如果任何定时器保留在该池里,发 布错误检测 0xC7。(遗忘的定时器能导致最终系统崩溃,这是最难考虑到的。)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有