0

我正在尝试开发 NDIS 过滤器驱动程序。但是,我似乎无法加载它。我启用了debugtestsigning启动选项;我的驱动程序是经过测试签名的,并且证书已加载到roottrustedpublisher存储中。

在我启用之前testsigning,我的驱动程序会在 ntbootlog.txt 中显示为

未加载驱动程序 \SystemRoot\system32\DRIVERS\mydriver.sys

启用后testsigning,驱动程序根本不显示。但是,它显示在接口属性中。即使我的驱动程序当前是一个非常小的直通 NDIS 过滤器驱动程序,该接口也会损坏,直到我禁用过滤器。当我禁用过滤器时,一切正常。

该驱动程序未列在 windbg 的模块列表中,但它在“未加载模块”列表中,这表明该驱动程序已在某个时间点加载。DriverEntry我的驱动程序在和DriverUnload以及所有强制性 NDIS 挂钩中产生了一些输出。这个输出都没有出现在 windbg's!dbgprint中,这表明驱动程序DriverEntry从未被调用过。

我不知道如何调试这个问题;谁能给我一些关于这里可能发生的事情的提示?

我正在使用 Windows 2008 R2 数据中心,已检查构建。我目前仅限于单机设置。

4

2 回答 2

0

如果驱动程序出现在卸载的模块列表中,那么它就被加载了。

如果您使用DbgPrint,请确保您阅读了MSDN文档,特别是有关过滤的部​​分。

要捕获驱动程序加载,您可以使用sxe ld:mydriver这将允许您在驱动程序条目中设置断点。另一种简单的调试方法是在 DriverEntry 中放置一个硬编码的断点DbgBreakPoint()

于 2011-03-25T23:36:26.453 回答
0

尝试首先加载一个仅在 DriverEntry 中打印跟踪字符串的简单驱动程序,对其进行测试签名并加载它。如果您看到跟踪,我们将尝试了解您的特定驱动程序出了什么问题。如果没有,可能您的系统禁用了内核跟踪,并且您的 NDIS 驱动程序由于问题而未加载,您当然看不到,因为系统跟踪已禁用。

于 2011-03-19T06:18:31.407 回答