Windows WFP内核模式驱动程序&x27;s DriverEntry在某些机器上的调用不同?

Windows WFP内核模式驱动程序&x27;s DriverEntry在某些机器上的调用不同?,windows,driver,wfp,windows-kernel,Windows,Driver,Wfp,Windows Kernel,我已经为自己的应用程序向Windows过滤平台MSNMNTR示例添加了一些代码,但它仍然具有相同的结构。我已经编译了Win8 64位的驱动程序和应用程序,并对驱动程序进行了生产签名。在我构建代码的(虚拟)机器上,示例运行良好,并且可以正确地监视。当我将inf、sys和exe复制到另一台机器上时,示例不会监视。通过traceview输出,我可以看到在第二台机器上,没有调用DriverEntry(),因此从未设置流控件。这两台机器正在运行Win8的发行版。我的新代码似乎没有问题,因为驱动程序在机器#

我已经为自己的应用程序向Windows过滤平台MSNMNTR示例添加了一些代码,但它仍然具有相同的结构。我已经编译了Win8 64位的驱动程序和应用程序,并对驱动程序进行了生产签名。在我构建代码的(虚拟)机器上,示例运行良好,并且可以正确地监视。当我将inf、sys和exe复制到另一台机器上时,示例不会监视。通过traceview输出,我可以看到在第二台机器上,没有调用DriverEntry(),因此从未设置流控件。这两台机器正在运行Win8的发行版。我的新代码似乎没有问题,因为驱动程序在机器#1上运行良好,而且似乎没有签名问题,因为当我在机器#2上关闭签名强制时,我仍然存在问题。代码的发行版和调试版都有相同的问题。下面是我用来设置和运行代码的步骤。哪些因素可能导致这种行为

  • 将driver.pdbs复制到用于traceview的文件夹中
  • 右键单击.inf并选择“安装”
  • 从提升的命令提示符运行“net start msnmntr”
  • 以管理员身份启动traceview
  • 从提升的命令提示符运行“monitor monitor”C:\Program Files\Internet Explorer\iexplore.exe“”
  • 另外,我还没有把windbg放在这个问题上,但我会在尝试后尽快用结果更新这个问题


    编辑以添加:好的,我在两台机器上运行了内核模式调试器,发现了行为上的差异。首先,DriverEntry在这两台机器上都会被调用。我错了。但是,在代码工作的计算机上(即监视web流量),当运行monitor.exe时调用DriverEntry(上面的步骤5),在代码不工作的计算机上,当执行“net start msnmntr”(上面的步骤3)时调用DriverEntry。

    问题是我没有通过安装调用第二台机器上的“monitor addcallouts”。由于这是一次性步骤,我忘记了几周前在原始机器上执行此操作