上,当消耗虚拟空间(对物理空间亦同)时,引导而没有/3GB的开关也是优先选取的。增加页面 文件的最大/最小量(通过两或三当中的一个因子)也是一个好主意 如果特别内存池可用,但是不到95%的所有池分配已经从特别池指定,在 Driver verifier管 理器的 Driver status screen上将有一个警告。发生这种情况时,你应该检查一个更短的驱动程序 列表,通过池标记检查单个池,或者给你的系统增加更多的物理内存。 确信所有的驱动程序分配已被检测,推荐加强驱动程序较长时间周期 非图形驱动程序 要获得这个选项怎样作用其他内核模式驱动程序的细节,参看特别内存池。 2122图形驱动程序的低资源模拟 当低资源模拟可用时, Driver verifier将引起随机的驱动程序内存分配的选择失效,这个过程 检查驱动程序对低内存和其他低资源状况下正常反应的能力。 下面的GD回调函数易受制于随机失效: EngAlloc mem EngAlloc userM EngcreateB EngcreateDeviceSurface Eng Device Bit map Eng createPalette ■ Engcreatecli Eng createPath EngcreateWnd Eng CreateDriverObject BRUSHOBJ pVAllocR brush CLIPOBJ_ ppoGetPath 为精确模拟一个低内存条件,这些分配故障直到系统启动7分钟后才被注入,因此,任何在 该过程中暴露的驱动程序错误将被当做合法的运行时间问题,而非不切实际的现象 标记为 MUST SUCCEED的分配请求不服从于这一过程, MUST SUCCEED池每页的最大 值被禁止。 这些内存失效也许会引起着色的错误,其表现在不正确的图象和其他输出错误,所以,这个 Driver verifier选项应该用于对一图形驱动程序的健全检测,而当检测正确执行时也应该运行。 Low resources simulation选项也许会在外壳图标的高速缓存里引起讹误,发生此情况,图标 的高速缓存必须手工从硬盘删除 非图形驱动程序 参看 Low resources simulation来了解该选项如何作用其他内核模式驱动程序的细节。 213激活和监视 Driver verifier Driver verifier由 Driver verifier的图形接口或 verifier. exe的命令行激活,特别内存池选项也 可通过 Global Flags Utility激活成标记的内存池
11 上,当消耗虚拟空间(对物理空间亦同)时,引导而没有/3GB 的开关也是优先选取的。增加页面 文件的最大/最小量(通过两或三当中的一个因子)也是一个好主意。 如果特别内存池可用,但是不到 95%的所有池分配已经从特别池指定,在 Driver Verifier 管 理器的 Driver Status screen 上将有一个警告。发生这种情况时,你应该检查一个更短的驱动程序 列表,通过池标记检查单个池,或者给你的系统增加更多的物理内存。 确信所有的驱动程序分配已被检测,推荐加强驱动程序较长时间周期 非图形驱动程序 要获得这个选项怎样作用其他内核模式驱动程序的细节,参看特别内存池。 2.1.2.2 图形驱动程序的低资源模拟 当低资源模拟可用时,Driver Verifier 将引起随机的驱动程序内存分配的选择失效,这个过程 检查驱动程序对低内存和其他低资源状况下正常反应的能力。 下面的 GDI 回调函数易受制于随机失效: ◼ EngAllocMem ◼ EngAllocUserMem ◼ EngCreateBitmap ◼ EngCreateDeviceSurface ◼ EngCreateDeviceBitmap ◼ EngCreatePalette ◼ EngCreateClip ◼ EngCreatePath ◼ EngCreateWnd ◼ EngCreateDriverObject ◼ BRUSHOBJ_pvAllocRbrush ◼ CLIPOBJ_ppoGetPath 为精确模拟一个低内存条件,这些分配故障直到系统启动 7 分钟后才被注入,因此,任何在 该过程中暴露的驱动程序错误将被当做合法的运行时间问题,而非不切实际的现象。 标记为 MUST_SUCCEED 的分配请求不服从于这一过程, MUST_SUCCEED 池每页的最大 值被禁止。 这些内存失效也许会引起着色的错误,其表现在不正确的图象和其他输出错误,所以,这个 Driver Verifier 选项应该用于对一图形驱动程序的健全检测,而当检测正确执行时也应该运行。 Low Resources Simulation 选项也许会在外壳图标的高速缓存里引起讹误,发生此情况,图标 的高速缓存必须手工从硬盘删除。 非图形驱动程序 参看 Low Resources Simulation 来了解该选项如何作用其他内核模式驱动程序的细节。 2.1.3 激活和监视 Driver Verifier Driver Verifier 由 Driver Verifier 的图形接口或 verifier.exe 的命令行激活,特别内存池选项也 可通过 Global Flags Utility 激活成标记的内存池
Driver verifier状态的大多数改变(激活、去活、改变选项、或者改变正被检查的驱动程序列 表)在重新启动时仍起作用,无需改变或重新编译驱动程序。 Driver verifier在 Microsoft Windows82000的自由和检查构建上都能执行 然而,一些选项在没有重新启动介入时仍能被激活或去活。细节参见 Driver verifier管理器的 易变设置窗口或命令 verifier/ volatile /flags VALUE。 监视驱动程序行为 Driver Verifier管理器窗口中的全局计数器和池跟踪,可用来监视 Driver verifier的动作和已 装载的驱动程序,这些窗口不监视图形驱动程序的检查 内核调试程序扩展! verifier也能用于监视和报告关于许多相关的 Driver verifier行为的统计 数字。当检查图形驱动程序时,应该以! gdikdx verifier扩展代替。关于调试程序扩展的细节 参看微软调试程序的使用文件 21.31检查器( Verifier)命令行 应用程序 verifier. exe可用于从命令窗口激活 Driver verifier 应用程序放在 Windows2000的 sy stem32目录下,在 Window2000DDK的 tools目录下。 命令行选项包括: verifier /flags VALUE Violevel 2 /all 使用指定的选项检查所有已安装的驱动程序, VALUE是下面位的一个综合。 位 作用 0x01 特别内存池 0x02 强迫IRQL检查 低资源模拟 0x08 内存池跟踪 0x10 I/O检查 位也许会自由地结合, VALUE必须作为一个十进制数输入,十六进制数不被支持。缺省值是 l1(1+2+8),如果包括/ iolevel2,IO检查被设置为 Level2。(缺省值是 Level1。) 这些设置在下一次引导后生效。 verifier /flags value /iolevel 21/driver NAME INAME2 NAME3.... 检査所列的驱动程序,被空格分开,多个驱动程序通过罗列它们的名字被确定,但是,诸如 n*sys等通配符的值不被支持。象上面的一样, VALUE和 iolevel相同 这些设置在下一次引导后生效。 verifier /reset 它清除了所有的 Driver Verifier设置在下一次引导后,不检查驱动程序。 verifier /volatile /flags vALUE 不同标准的 Driver verifier激活,易变设置立即起作用,ALUE是下面位的一个结合。 位 作用 0x0 特别内存池 0x02 强迫IRQL检查
12 Driver Verifier 状态的大多数改变(激活、去活、改变选项、或者改变正被检查的驱动程序列 表)在重新启动时仍起作用,无需改变或重新编译驱动程序。Driver Verifier 在 Microsoft® Windows® 2000 的自由和检查构建上都能执行。 然而,一些选项在没有重新启动介入时仍能被激活或去活。细节参见 Driver Verifier 管理器的 易变设置窗口或命令 verifier /volatile /flags VALUE。 监视驱动程序行为 Driver Verifier 管理器窗口中的全局计数器和池跟踪,可用来监视 Driver Verifier 的动作和已 装载的驱动程序,这些窗口不监视图形驱动程序的检查。 内核调试程序扩展!verifier 也能用于监视和报告关于许多相关的 Driver Verifier 行为的统计 数字。当检查图形驱动程序时,应该以!gdikdx.verifier 扩展代替。关于调试程序扩展的细节, 参看微软调试程序的使用文件。 2.1.3.1 检查器(Verifier)命令行 应用程序 verifier.exe 可用于从命令窗口激活 Driver Verifier。 应用程序放在 Windows2000 的 system32 目录下,在 Windows2000 DDK 的 tools 目录下。 命令行选项包括: verifier /flags VALUE [/iolevel 2] /all 使用指定的选项检查所有已安装的驱动程序,VALUE 是下面位的一个综合。 位 作用 0x01 特别内存池 0x02 强迫 IRQL 检查 0x04 低资源模拟 0x08 内存池跟踪 0x10 I/O 检查 位也许会自由地结合,VALUE 必须作为一个十进制数输入,十六进制数不被支持。缺省值是 11(1+2+8),如果包括/ iolevel 2,I/O 检查被设置为 Level 2。(缺省值是 Level 1。) 这些设置在下一次引导后生效。 verifier /flags VALUE [/iolevel 2] /driver NAME [NAME2 NAME3….] 检查所列的驱动程序,被空格分开,多个驱动程序通过罗列它们的名字被确定,但是,诸如 n*.sys 等通配符的值不被支持。象上面的一样,VALUE 和/ iolevel 相同。 这些设置在下一次引导后生效。 verifier /reset 它清除了所有的 Driver Verifier 设置,在下一次引导后,不检查驱动程序。 verifier /volatile /flags VALUE 不同标准的 Driver Verifier 激活,易变设置立即起作用,VALUE 是下面位的一个结合。 位 作用 0x01 特别内存池 0x02 强迫 IRQL 检查
低资源模拟 位也许会自由地结合,ALUE必须作为一十进制数输入(而非十六进制数)。 仅仅已列的选项能够有多种设置,在一个多种设置方式里,被检查的驱动程序列表不能改变, 且所有的多项设置在重新引导时将丢失 verifier /query 产生 Driver verifier所显示在窗口的当前数据的一个总括,数据包括内存分配的一个枚举、 IRQL的增加、自旋锁和其他 Driver verifier选项的相关数据。 verifier /log LOG FILE NAME interval SECONDSI 产生记录文件来保持内存、IRQL和自旋锁信息。这个文件有以 SECONDS指定的频率写上去 的当前数据,缺省间隔是30秒 verifier /? 显示帮助信息。 21.32 Driver verifier管理器 Driver verifier管理器是一个图形接口,其允许你激活 Driver Verifier并监视它的动作状态 Driver verifier管理器有五个不同的标记页, Driver status、 Global counters和 PoolTracking 标记用于显示信息和监视正被检查的驱动程序, Settings标记用来激活和配置 Driver verifier的动 作;对此窗口的改变将在下次引导后起作用,Ⅴ olatile settings标记用于立即改变 Driver verifier 的动作(在重新引导之前)。 启动 Driver verifier管理器 Driver verifier的快捷方式能启动 Driver verifier管理器,该快捷方式安装在 Windows2000 DDK里 在命令窗口运行应用程序 verifierexe也能启动 Driver Verifier管理器。该文件放在 Windows.2000的%indr% asystem32目录下,在 Windows2000DDK的 tools目录里也有。在没有 命令行选项时运行 verifierexe来激活 Driver verifier管理器。 驱动程序状态窗口 图 Driver Verifier管理器驱动程序状态窗口 Driver status窗口显示哪一些驱动程序正被装载、哪一些驱动程序被检查和哪一些 Driver Verifier选项可用 全局标志部分表明哪一些 Driver verifier选项当前正在使用 被检査的驱动程序部分列出所有驱动程序, Driver verifier己被指示检查这些程序,可能的状 态值是 ■ Loaded 这意味着驱动程序当前已经装载并正被检査
13 0x04 低资源模拟 位也许会自由地结合,VALUE 必须作为一十进制数输入(而非十六进制数)。 仅仅已列的选项能够有多种设置,在一个多种设置方式里,被检查的驱动程序列表不能改变, 且所有的多项设置在重新引导时将丢失。 verifier /query 产生 Driver Verifier 所显示在窗口的当前数据的一个总括,数据包括内存分配的一个枚举、 IRQL 的增加、自旋锁和其他 Driver Verifier 选项的相关数据。 verifier /log LOG_FILE_NAME [/interval SECONDS] 产生记录文件来保持内存、IRQL 和自旋锁信息。这个文件有以 SECONDS 指定的频率写上去 的当前数据,缺省间隔是 30 秒。 verifier /? 显示帮助信息。 2.1.3.2 Driver Verifier 管理器 Driver Verifier 管理器是一个图形接口,其允许你激活 Driver Verifier 并监视它的动作状态。 Driver Verifier 管理器有五个不同的标记页,Driver Status、Global Counters 和 PoolTracking 标记用于显示信息和监视正被检查的驱动程序,Settings 标记用来激活和配置 Driver Verifier 的动 作;对此窗口的改变将在下次引导后起作用,Volatile Settings 标记用于立即改变 Driver Verifier 的动作(在重新引导之前)。 启动 Driver Verifier 管理器 Driver Verifier 的快捷方式能启动 Driver Verifier 管理器,该快捷方式安装在 Windows2000 DDK 里。 在命令 窗口 运行 应用程 序 verifier.exe 也 能启 动 Driver Verifier 管理 器。 该文 件放 在 Windows2000 的%windir%\system32 目录下,在 Windows2000 DDK 的 tools 目录里也有。在没有 命令行选项时运行 verifier.exe 来激活 Driver Verifier 管理器。 驱动程序状态窗口 图: Driver Verifier 管理器驱动程序状态窗口 Driver Status 窗口显示哪一些驱动程序正被装载、哪一些驱动程序被检查和哪一些 Driver Verifier 选项可用。 全局标志部分表明哪一些 Driver Verifier 选项当前正在使用。 被检查的驱动程序部分列出所有驱动程序,Driver Verifier 已被指示检查这些程序,可能的状 态值是: ◼ Loaded 这意味着驱动程序当前已经装载并正被检查
Unloaded 这意味着驱动程序自最后一次引导以来被装载和检査过至少一次,但目前没被装载」 Never Loaded 这意味着指示 Driver verifier来检查这个驱动程序,但驱动程序自最后一次引导以来未被装 载,这可能由讹误的驱动程序图形文件所致。 通过点击标题栏上的 Driver或 Status来分类这个列表。 重设频率部分控制多久刷新状态栏一次,高、中和低指令 Driver verifier以不同的速度刷新该 栏,而手工不能自动更新此栏。按钮 Refresh now可使状态栏立即被更新 如果特别内存池可用,但是不到95%的所有池分配已经从特别池指定,窗口上将出现一个警 告信息。参看特别内存池或图形驱动程序特别内存池获取详细资料 全局计数器窗口 Driver Verifier管理器的全局计数器窗口 全局计数器( Global counters)窗口显示统计数字,这些数字可帮助监视 Driver verifier的 分配计数器对监视与特别内存池相关的统计数字特别有用,这些计数器仅记录标准内核模式 驱动程序所使用的池,而不包括图形驱动程序在内,这里 Driver verifier正在检查标准内核模式驱 动程序。当然,如果相应的功能不可用,这些计数器当中的一些将被设置为零,举例说,如果低 资源模拟没运行,注入计数器的故障将为零 重设频率部分控制这些计数器多久被更新一次,高、中和低指令 Driver verifier以不同的速度 刷新计数器,而手工不能自动更新。按钮 Refresh now可使计数器立即更新。 池跟踪窗口 图 Driver Verifier管理器的池跟踪窗口 池跟踪( Pool tracking)窗口显示了关于分页和未分页的池分配的信息(包括当前值和峰值)。 此窗口对监视与内存池跟踪有关的统计数字非常有用。 单个计数器部分每次显示一个驱动程序的统计数字,此窗口顶部的下拉框允许你从当前正被 检查的所有驱动程序中选择 在全局计数器部分,不能跟踪的分配计数器显示了当前正被检査的所有驱动程序的未跟踪分 配数目。由于特别池不能用于这些计数器,而计数器不跟踪大小为一页或更大的分配 重设频率部分控制这些计数器多久被更新一次,高、中和低指令 Driver verifier以不同的速度 刷新计数器,而手工不能自动更新。按钮 Refresh Now可使计数器立即被更新。 设置窗口 图 Driver verifier管理器的设置窗口 设置( Settings)窗口是 Driver verifier和它的选项的主要控制面板
14 ◼ Unloaded 这意味着驱动程序自最后一次引导以来被装载和检查过至少一次,但目前没被装载。 ◼ Never Loaded 这意味着指示 Driver Verifier 来检查这个驱动程序,但驱动程序自最后一次引导以来未被装 载,这可能由讹误的驱动程序图形文件所致。 通过点击标题栏上的 Driver 或 Status 来分类这个列表。 重设频率部分控制多久刷新状态栏一次,高、中和低指令 Driver Verifier 以不同的速度刷新该 栏,而手工不能自动更新此栏。按钮 Refresh Now 可使状态栏立即被更新。 如果特别内存池可用,但是不到 95%的所有池分配已经从特别池指定,窗口上将出现一个警 告信息。参看特别内存池或图形驱动程序特别内存池获取详细资料。 全局计数器窗口 图: Driver Verifier 管理器的全局计数器窗口 全局计数器(Global Counters)窗口显示统计数字,这些数字可帮助监视 Driver Verifier 的 行为。 分配计数器对监视与特别内存池相关的统计数字特别有用,这些计数器仅记录标准内核模式 驱动程序所使用的池,而不包括图形驱动程序在内,这里 Driver Verifier 正在检查标准内核模式驱 动程序。当然,如果相应的功能不可用,这些计数器当中的一些将被设置为零,举例说,如果低 资源模拟没运行,注入计数器的故障将为零。 重设频率部分控制这些计数器多久被更新一次,高、中和低指令 Driver Verifier 以不同的速度 刷新计数器,而手工不能自动更新。按钮 Refresh Now 可使计数器立即更新。 池跟踪窗口 图: Driver Verifier 管理器的池跟踪窗口 池跟踪(Pool Tracking)窗口显示了关于分页和未分页的池分配的信息(包括当前值和峰值)。 此窗口对监视与内存池跟踪有关的统计数字非常有用。 单个计数器部分每次显示一个驱动程序的统计数字,此窗口顶部的下拉框允许你从当前正被 检查的所有驱动程序中选择。 在全局计数器部分,不能跟踪的分配计数器显示了当前正被检查的所有驱动程序的未跟踪分 配数目。由于特别池不能用于这些计数器,而计数器不跟踪大小为一页或更大的分配。 重设频率部分控制这些计数器多久被更新一次,高、中和低指令 Driver Verifier 以不同的速度 刷新计数器,而手工不能自动更新。按钮 Refresh Now 可使计数器立即被更新。 设置窗口 图: Driver Verifier 管理器的设置窗口 设置(Settings)窗口是 Driver Verifier 和它的选项的主要控制面板
当按下 Apply按钮时,从 Settings窗口传来的所有改变被写到注册表里。如果你退出 Driver Verifier管理器而没有按 Apply,将问你是否想应用或丢弃你的改变 当再次引导之后, Driver verifier将遵照窗口上的改变,直到你重新引导,将不会有 Settings 窗口的改变对 Driver verifier的功能起作用。 窗口上当前系统可用的驱动程序部分列出了在最近的一次引导里系统所装载的驱动程序 Verification Status栏给出了每个驱动程序的当前状态,可能的检查状态值有: ■Ⅴ erify Enabled 这意味着驱动程序正被检査,在重新引导后也将继续被检査 Verify Disabled 这意味着驱动程序当前没被检査,在重新引导后也不被检査。 Verify Enabled( Reboot Needed) 这意味着驱动程序当前没被检查,但是用户已请求检査该驱动程序,在重新引导后它将被检 a verify Disabled (Reboot Needed) 这意味着驱动程序正被检査,但是用户已请求结束检査,重新引导后,该驱动程序不再被检 你可以从这个列表中选择一个或多个驱动程序,点击 Verify或Don' t Verify按钮,你也可以 在驱动程序名右击,并从弹出的菜单控制检查。 在下一次重新引导后检查这些附加的驱动程序窗口,允许你进入当前系统并未装载的驱动程 序名。多个名字必须以空格分开。 如果选择检査所有驱动程序,在重新引导后, Driver verifier将检查所有的驱动程序。当选择 这个选项按钮时,驱动程序列表和 Verify和Don' t Verify按钮变成灰色 检查类型部分允许你选择在重新引导后哪一个 Driver verifier选项可用。参看 Driver verifie 能力和图形 Driver verifier能力中关于这些选项的描述。 Preferred Settings按钮是打开大部分常用选项的快方式(特别内存池、强迫IRQL检测、内 存池跟踪和2级IO检查)它也选择了检查所有驱动程序按钮 Reset all按钮将使所有的驱动程序检查不可用 易变设置窗口 Driver verifier管理器的易变设置 易变设置( Volatile Settings)窗口允许你对 Driver verifier做立即的改变(而不是在重新引导 之后) 三种 Driver Verifier选项—一特别内存池、强迫IRQL检测和低资源模拟能从该窗口打开或关 闭。当按下Appl按钮时,这些选项当前正被检査的每一个驱动程序激活或去活。 Volatile settings窗口不能用来改变被检查的驱动程序列表,也不能改变 Memory Pool acking或IO检查状态,所有多项设置在重新引导后将丢失。 该窗口上的检查驱动程序和更新频率部分对应驱动程序状态窗口是同一的
15 当按下 Apply 按钮时,从 Settings 窗口传来的所有改变被写到注册表里。如果你退出 Driver Verifier 管理器而没有按 Apply,将问你是否想应用或丢弃你的改变。 当再次引导之后,Driver Verifier 将遵照窗口上的改变,直到你重新引导,将不会有 Settings 窗口的改变对 Driver Verifier 的功能起作用。 窗口上当前系统可用的驱动程序部分列出了在最近的一次引导里系统所装载的驱动程序。 Verification Status 栏给出了每个驱动程序的当前状态,可能的检查状态值有: ◼ Verify Enabled 这意味着驱动程序正被检查,在重新引导后也将继续被检查。 ◼ Verify Disabled 这意味着驱动程序当前没被检查,在重新引导后也不被检查。 ◼ Verify Enabled(Reboot Needed) 这意味着驱动程序当前没被检查,但是用户已请求检查该驱动程序,在重新引导后它将被检 查。 ◼ Verify Disabled(Reboot Needed) 这意味着驱动程序正被检查,但是用户已请求结束检查,重新引导后,该驱动程序不再被检 查。 你可以从这个列表中选择一个或多个驱动程序,点击 Verify 或 Don’t Verify 按钮,你也可以 在驱动程序名右击,并从弹出的菜单控制检查。 在下一次重新引导后检查这些附加的驱动程序窗口,允许你进入当前系统并未装载的驱动程 序名。多个名字必须以空格分开。 如果选择检查所有驱动程序,在重新引导后,Driver Verifier 将检查所有的驱动程序。当选择 这个选项按钮时,驱动程序列表和 Verify 和 Don’t Verify 按钮变成灰色。 检查类型部分允许你选择在重新引导后哪一个 Driver Verifier 选项可用。参看 Driver Verifier 能力和图形 Driver Verifier 能力中关于这些选项的描述。 Preferred Settings 按钮是打开大部分常用选项的快方式(特别内存池、强迫 IRQL 检测、内 存池跟踪和 2 级 I/O 检查)它也选择了检查所有驱动程序按钮。 Reset All 按钮将使所有的驱动程序检查不可用。 易变设置窗口 图: Driver Verifier 管理器的易变设置 易变设置(Volatile Settings)窗口允许你对 Driver Verifier 做立即的改变(而不是在重新引导 之后)。 三种 Driver Verifier 选项——特别内存池、强迫 IRQL 检测和低资源模拟能从该窗口打开或关 闭。当按下 Apply 按钮时,这些选项当前正被检查的每一个驱动程序激活或去活。 Volatile Settings 窗口不能用来改变被检查的驱动程序列表,也不能改变 Memory Pool Tracking 或 I/O 检查状态,所有多项设置在重新引导后将丢失。 该窗口上的检查驱动程序和更新频率部分对应驱动程序状态窗口是同一的