0

我正在开发基于 ddk 示例“passthru”的驱动程序,但在 win7(x86 或 x64)中加载此驱动程序时遇到问题。我已经在 winxp(x86 和 x64)中测试了我的驱动程序,它运行得很好,但是当我尝试将此驱动程序加载到 win7(F8->禁用驱动程序签名强制)时,它似乎失败了。然后,我尝试了本机 passthru 代码,它也失败了。我以为它失败了,因为

  1. 我看不到使用 KdPrint fron windbg 的任何输出。
  2. 我无法从系统事件中看到任何有用的信息。
  3. 我在 passthru!DriverEntry 上设置了断点,似乎 DriverEntry 没有被调用。

我的WDK是7600.16385.1,passthru应该是兼容win7的。我使用命令“build -cZ”编译 passthru。你能帮我理解这个问题,或者任何关于为什么在win7中没有加载passthru的线索吗?

我在win7 x86下编译过这个驱动,检查编译环境,在win7 x86下测试过。

已解决:实际上驱动已经加载,但是win7默认不显示KdPrint的输出,应该使用KdPrintEx指定消息级别,或者修改注册表显示调试信息。现在我也不知道为什么 bp 也失败了。

4

2 回答 2

0

好吧,您的问题相当不具体,但我在这里看到一个特殊问题:启用测试签名和禁用内核模式签名策略仍然需要您对二进制文件进行签名...(在 WHQL 测试之后,MS 将为驱动程序交叉签名.cat文件)。参考这个

看:

对于 64 位版本的 Windows Vista 和更高版本的 Windows,内核模式代码签名策略要求所有内核模式代码都具有数字签名。

和:

操作系统加载程序和内核加载由任何证书签名的驱动程序。证书验证不需要链接到受信任的根证书颁发机构。但是,每个驱动程序映像文件都必须具有数字签名。

这些命令应该允许加载用任何东西签名的驱动程序

bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON

您没有提及构建时选择的目标操作系统。Icepack提到了它。您需要实际构建Windows 7 以使其与新的 NDIS 6.0 一起使用。简单地加载为 XP(和旧 NDIS 版本)构建的驱动程序可能根本不起作用。

我的建议是,使用DDKBUILD.CMD并使用(免费构建,W7)构建一个驱动程序:

ddkbuild.cmd -W7 fre . -cZ

和一个(免费构建,WXP)

ddkbuild.cmd -W7XP fre . -cZ

上面的命令行已经考虑了你拥有的 WDK。请注意,如果DDKBUILD.CMD无法检测到您已安装的 WDK,您必须将环境变量设置W7BASE为指向安装 WDK 的文件夹(带有 的文件夹install.htm,通常类似于C:\WINDDK\7600.16385.1)。

于 2012-10-22T09:26:57.503 回答
0

通常,您不能在 Win7 机器上使用为 WinXP 目标构建的驱动程序。为 Win7 目标重建。

于 2012-10-22T09:13:07.660 回答