WFP标注和NDIS LWF不能位于相同的驱动程序二进制文件中

时间:2015-07-12 03:04:47

标签: c windows driver ndis

我正在开发WinPcap,一个 NDIS轻量级过滤器驱动程序。为了捕获环回数据包,我还制作了一个 Windows过滤平台(WFP)标注驱动程序。我已将这两个部分整合在一个驱动程序二进制文件中。但是当系统重新启动时,新驱动程序无法运行 d。

目前,我刚刚放弃了WFP标注INF文件,仅使用NDIS过滤器INF来安装此集成驱动程序(我不知道如何使用两个INF文件驱动程序二进制),它可以安装没有问题,工作正常(我的意思是我可以通过WFP捕获环回数据包)。但是当系统重新启动时,驱动程序不会被加载,而当我运行" net start npf" (npf是驱动程序服务名称),它说:

<ul class="clearing-thumbs clearing-feature" data-clearing>
          <% @galleries.each do |f| %>


       <li>     <%= image_tag (f.image.url)%>
 <% image_tag (f.image.url(:medium)) %></li>

然后我在驱动程序中注释了所有WFP代码和lib导入(fwpkclnt.lib和uuid.lib),重新启动后驱动程序运行良好。所以 WFP标注INF缺失的原因应该是原因。但我不知道如何为这个新驱动程序编写INF文件

1)如何安装此驱动程序与NDIS过滤器和WFP标注混合使用?我知道NDIS过滤器使用INetCfg API进行安装,可以通过右键单击inf文件并选择&#34; install&#34;来安装WFP标注。 (我不知道它的程序化方式)。这两种方法似乎有所不同。

2)如何编写INF文件,尤其是设备安装类? NDIS过滤器的类是NetService,但WFP标注是WFPCALLOUTS。我可以在一个INF文件中指定两个类吗?或者我应该提供两个INF文件?如果我没有提供正确的INF文件怎么办?就像我只提供带有NetService类的INF文件一样,WFP标注部分会工作吗?

我的NDIS过滤器INF文件类似于:

C:\Windows\system32>net start npf
System error 2 has occurred.

The system cannot find the file specified.

WFP标注就像:

[version]
Signature       = "$Windows NT$"
Class           = NetService
ClassGUID       = {4D36E974-E325-11CE-BFC1-08002BE10318}
CatalogFile     = npcap.cat
Provider        = %Insecure%
DriverVer=05/15/2015,14.48.38.905

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。答案是:

  1. 提供两个INF,一个用于LWF,另一个用于WFP标注。

  2. 安装相同的二进制文件两次:首先使用WFP标注方式安装二进制文件,然后使用LWF方式安装二进制文件。卸载应该颠倒过来。

  3. 代码已经运行,请参阅此处:https://github.com/nmap/npcap