【问题标题】:DDK sample passthru not loaded in win7DDK 示例 passthru 未在 win7 中加载
【发布时间】:2012-10-12 01:07:40
【问题描述】:

我正在开发基于 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 失败了。

【问题讨论】:

  • windbg 中的lm 命令是否在加载列表中显示您的驱动程序?
  • 是的,驱动在加载列表中

标签: window driver wdk ndis passthru


【解决方案1】:

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

【讨论】:

  • 这个驱动我已经在win7 x86校验编译环境下编译过,但是加载失败。
  • @0xC0000022L 问题是关于 NDIS 驱动程序的。 Win7 具有 NDIS 6.x,而 WinXP 具有 NDIS 5.x,对于 WinXP 之上的任何内容均已弃用。我不建议依赖这种使用的结果,即使它可能看起来有效。
  • @JeffZhou 在事件查看器中查看与您的驱动程序相关的任何内容。另外,您在设备管理器中看到驱动程序吗?如果是这样,它是否有“黄色爆炸”?
  • 我发现在事件查看器中没有任何用处。我可以使用 winobj 看到“Passthru”设备对象,我在设备管理器中看不到驱动程序,你能告诉我如何在设备管理器中找到驱动程序吗?
  • 您应该会在“网络适配器”下看到 NDIS 驱动程序。如果你在那里看不到它,我想你的安装有问题。
【解决方案2】:

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

见:

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

和:

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

这些命令应该允许加载使用 anything

签名的驱动程序
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON

您没有提及构建时选择的目标操作系统。 Icepack 提到它。您需要实际构建 for 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) .

【讨论】:

  • @icepack?所以?让我引用链接的文档:“但是,在大多数情况下,可以在 32 位版本的 Windows Vista 和更高版本的 Windows 上安装和加载未签名的驱动程序。” ...我宁愿照书去做,以发现我做了一些不必要的事情,而不是发现忽略简单的步骤会导致失败。过去曾被这些特定的 MS 相关问题所困扰。
  • 我运行 bcdedit.exe 就像你上面提到的,但仍然没有工作。我应该为 win7 使用 NDIS 6.x 吗?我注意到 WDK 记录了 win7 支持 passthru 示例,但为什么我无法加载它。
  • 杰夫:正如我所写,您在问题中遗漏了重要的事实。你构建的目标是什么?看,icepack 提出了一个非常好的观点。 NDIS 的驱动程序模型在 Vista 之前和 Vista 之后有所不同。所以你的构建应该考虑到这一点。我将编辑我的答案。
  • 这个驱动我在win7 x86 check build环境下搭建过
  • @Jeff:那么应该是签名问题。事件日志说什么?考虑到问题的深度,您的问题确实相当模糊。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多