【发布时间】:2015-09-30 13:45:31
【问题描述】:
我正在开发 WinPcap,一个 NDIS Light-Weight Filter 驱动程序。为了捕获环回数据包,我还制作了 Windows 过滤平台 (WFP) 标注 驱动程序。我已将这两个部分集成到一个驱动程序二进制文件y中。但是新驱动系统重启后无法运行d.
目前,我只是放弃了 WFP 标注 INF 文件,只使用 NDIS 过滤器 INF 来安装这个集成驱动程序(我不知道如何为一个驱动程序二进制文件使用两个 INF 文件),它可以毫无问题地安装并且工作正常(我的意思是我可以通过 WFP 捕获环回数据包)。但是当系统重新启动时,驱动程序不会加载,当我运行“net start npf”(npf是驱动程序服务名称)时,它说:
C:\Windows\system32>net start npf
System error 2 has occurred.
The system cannot find the file specified.
然后我在驱动程序中注释了所有 WFP 代码和库导入(fwpkclnt.lib 和 uuid.lib),驱动程序在重新启动后运行良好。所以应该是 WFP 标注 INF 缺失的原因。但我不知道如何为这个新驱动程序编写 INF 文件。
1) 如何安装这个与 NDIS 过滤器和 WFP 标注混合的驱动程序?我知道 NDIS 过滤器使用 INetCfg API 进行安装,并且可以通过右键单击 inf 文件并选择“安装”来安装 WFP 标注(我不知道它的编程方式)。这两种方法似乎不一样。
2) 如何编写INF文件,尤其是Device Setup Class? NDIS 过滤器的类是 NetService,但 WFP 标注的是 WFPCALLOUTS。我可以在一个 INF 文件中指定两个类吗?或者我应该提供两个 INF 文件?如果我没有提供正确的 INF 文件怎么办?就像我只提供带有 NetService 类的 INF 文件一样,WFP 标注部分会起作用吗?
我的 NDIS 过滤器 INF 文件如下:
[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
世界粮食计划署的标注是这样的:
[Version]
Signature = "$WINDOWS NT$"
Class = WFPCALLOUTS
ClassGuid = {57465043-616C-6C6F-7574-5F636C617373}
Provider = %LBTest%
CatalogFile = LBTest.cat
Thanks!
【问题讨论】: