1 《Undocumented Windows 2000 Secrets》翻译 --- 第三章( 三 )


表 3-1 中有几处需参考配置文件 ---w2k_wiz.ini。示例 3-1 给出了其默认设置 。在使用向导之前,你应该将光盘 srcw2k_wizrelease 目录下的 w2k_wiz.exe 、 w2k_wiz.ini 和所有的 w2k_wiz.t* 模板文件复制到你的硬盘上,然后编辑配置文件,将对应内容改为你自己的设置 。你还需要修改 Include 、 Free 和 Checked,使其和你的 DDK 安装相匹配 。如果你使用 Visual C/C6.0,可以不改变 Root 的值 。如果不,则将其设为你存放工程文件的根目录 。如果以一个反斜线结尾,它将作为默认值 。在 示例 3-1 中,其键值为: HKEY_CURRENT_USERSoftWareMicrosoftoDevStudio6.0Directories,而 WorkspaceDir 用来存放基本的工作目录 。
键入 w2k_wiz MyDriver 来执行该向导,它会当前目录下创建名为 MyDriver 的工程目录,该目录将存放向导生成的 MyDriver.dsw 、 MyDriver.dsp 、 MyDriver.c 、 MyDriver.h 、 MyDriver.rc 和 MyDriver.ico 文件 。如果你指定了具体的路径,则会在你指定的路径下创建该目录 。另一个合法的命令选项是星号,如: w2k_wiz *MyDriver。在此种情况下,向导不会在当前目录下创建工程目录,而是去查找 Visual C/C维护的默认的工程根目录,即 w2k_wiz.ini 中的 Root 所指向的位置 。
w2k_wiz.ini
08-27-2000 Sven B. Schreiber
sbs@orgon.com
[Settings]
Text =
Company =
Author =
Email =
Prefix =
Include = E:NTDDKinc
Free = E:NTDDKlibfrei386
Checked = E:NTDDKlibchki386
Root = HKEY_CURRENT_USERSoftwareMicrosoftDevStudio6.0DirectoriesWorkspaceDir
示例 3-1. 向导支持的自定义选项
运行驱动向导
现在,来试试这个驱动向导 。示例 3-2 给出了在 Windows 2000 控制台下执行 w2k_wiz *TestDrv 后的输出 。这将在 Visual C/C默认的工程根目录下创建一个名为 TestDrv 的工程目录 。
显然,除了将 .td 模板转换为 .def 时出了错,其余转换都成功的完成了 。因为该向导生成的驱动程序骨架不需要 .def 文件,所以不需要提供 .td 模板文件 。现在,用 Visual C/C打开一个新的 WorkSpace,然后你会发现一个名为 TestDrv 的新目录,该目录中包含一个名为 TestDrv.dsw 的 WorkSpace 文件 。该文件可以被正确的打开 。接下来,你因该为生成项目选择活动的配置信息 。驱动向导生成的 .dsp 文件提供了如下两个可用配置:
1. Win2k Kernel-mode Driver(debug)
2. Win2k Kernel-mode Driver(release)
默认情况下,将使用 debug 配置来生成项目,但是你可在任何时候从 Visual C/C菜单 Build/Set Active Configuration 来选择不同的项目配置 。最后,你要将光盘中的 srccommonincludeDrvInfo.h 复制到你自己的头文件目录中 。在打开 TestDrv.rc 时,应使用文本模式来打开(如 图 3-3 所示),这是因为该文件使用了来自 DrvInfo.h 中的复杂的宏定义,这些宏会导致资源编辑器异常退出 。这个错误从 Visual C/C5.0 开始,在我印象中,一直没有被改正过 。和编辑器不同,资源编译器( Resource Compiler )可以正常的处理这些宏 。
图 3-3. 以文本模式打开 TestDrv.c 、 TestDrv.h 和 TestDrv.rc
现在,已经为第一次编译做好了所有准备 。在示例 3-3 中,我通过选择 Build/Rebuild 菜单来建立 Driver 的 Release 版,看起来一切都正常 。顺便说一下,头两行末尾的省略号表示我截断了 Build 命令的输出 。
链接器会在 Debug 或 Release 目录下创建了一个名为 TestDrv.sys 的可执行文件,这依赖于你的生成配置 。Test Driver 的 Release 版大小为 5.5KB,其 Debug 版为 8KB。你可以使用本书光盘中的 MFVDasm 或 PEView 来验证 TestDrv.sys 是否包含有效的代码和数据 。
深入驱动程序的骨架
列表 3-3 展示了向导生成的 TestDrv.c。与之相关的头文件 TestDrv.h 在 列表 3-4 中 。在 列表 3-3 中,请注意标题处的

推荐阅读