首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winpcap驱动程序函数调用

Winpcap驱动程序函数调用
EN

Stack Overflow用户
提问于 2013-12-28 18:48:16
回答 1查看 401关注 0票数 1

我的C++应用程序使用Winpcap做各种事情(现在主要是学习)。

如何检查Winpcap是否已安装,如果未安装,则在应用程序启动时抛出错误?

另外,有没有人能解释一下Winpcap驱动函数是如何调用的?我知道我包含了pcap.h来调用这些函数,但是它们是如何传递给OS/Driver的呢?它不像WINAPI调用或SYSCALLs,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-28 19:32:38

当你在你的机器上用winpcap编译和链接你的可执行文件,然后在没有安装winpcap的系统上执行它,用户会得到一个典型的“程序无法启动,因为缺少某某”。如下所示:

为了缓解这个问题,你可以假设winpcap是由

  • 将winpcap与软件的安装捆绑在一起,但要遵守软件可能具有的任何许可注意事项。
  • 要求用户在安装软件之前或之后立即自行安装winpcap。

有了这样的设置,当用户遇到这些错误时,他们将更清楚地知道问题出在哪里。

要避免Windows错误消息框本身,您可以

  • 通过使用LoadLibrary()显式加载winpcap来动态处理winpcap,使用GetProcAddress()获取方法地址,并在找不到winpcap时进行解救。

我相信这就是Wireshark正在做的事情,或者至少过去是这样做的。

对于后者,如果您甚至在尝试LoadLibrary()以确保系统上已正确安装之前,就可以检查HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst是否存在(这曾经是检查开发邮件列表中是否存在winpcap的推荐方法),这也会有所帮助。您还可以在软件的安装程序中检查是否存在此密钥。

请注意,动态使用winpcap的最后一个选项是最不方便的。如果你只是在实验,你应该遵循官方的指南。你没有说你使用的是什么编译器,然而使用winpcap的官方方式是概述in this document

通常,winpcap与驱动程序进行异步交互,但是作为winpcap的用户,您应该坚持使用官方接口,而不是直接调用驱动程序。下面是它的工作原理的高级图表。我从NPF driver internals manual的网页上拿到的。鼓励您阅读它,并跟进特定的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20813640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档