gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:12:41 30 4
gpt4 key购买 nike

我正在开发 WinPcap,一个 NDIS 轻量级过滤器 驱动程序。为了捕获环回数据包,我还制作了一个Windows Filtering Platform (WFP) callout驱动程序。我已将这两个部分集成到一个驱动程序二进制文件中。但新驱动系统重启后无法运行

目前,我刚刚放弃了 WFP callout 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!

最佳答案

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

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

  2. 安装相同的二进制文件两次:首先使用 WFP callout 方式安装二进制文件,然后使用 LWF 方式安装二进制文件。应逆向卸载。

代码已经可以运行,请参见此处:https://github.com/nmap/npcap

关于c - WFP 标注和 NDIS LWF 不能位于同一驱动程序二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363985/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com