我正在开发基于ddk示例“passthru”的驱动程序,我在win7(x86或x64)中加载此驱动程序时遇到问题。我已经在winxp(x86和x64)中测试了我的驱动程序,它运行得很好,但是当我尝试将此驱动程序加载到win7(F8->禁用驱动程序签名强制执行)时,它似乎失败了。然后,我尝试了原生的passthru代码,它也失败了。我认为它失败了,因为
我的WDK是7600.16385.1,而passthru应该与win7兼容。我使用命令“build -cZ”编译passthru。 你能帮我理解这个问题,或者为什么passthru没有加载到win7中的任何线索?
我在win7 x86检查构建环境中构建了此驱动程序,并在win7 x86中进行了测试。
解决:实际上,驱动程序已经加载,但是默认情况下win7中没有显示KdPrint的输出,你应该使用KdPrintEx来指定消息级别,或者修改注册表来显示调试消息。现在我不知道为什么bp也失败了。
答案 0 :(得分:0)
通常,您无法在Win7计算机上使用为WinXP目标构建的驱动程序。重建Win7目标。
答案 1 :(得分:0)
你的问题很不明确,但我在这里看到一个特殊的问题:启用测试签名和禁用内核模式签名策略仍然要求你签署二进制文件...(在WHQL测试之后) MS将交叉签名驱动程序的.cat
文件。请参阅this。
请参阅:
对于64位版本的Windows Vista和更高版本的Windows, 内核模式代码签名策略要求所有内核模式代码 有数字签名。
和
操作系统加载程序和内核加载驱动程序 由任何证书签署。不需要证书验证 链接到受信任的根证书颁发机构。但是,每一个 驱动程序映像文件必须具有数字签名。
这些命令应允许加载使用任何
签名的驱动程序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
)。