gpt4 book ai didi

c++ - Winpcap 驱动函数调用

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:28 26 4
gpt4 key购买 nike

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

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

此外,任何人都可以阐明如何调用 Winpcap 驱动程序函数吗?我知道我包含了 pcap.h 来调用这些函数,但是它们是如何中继到 OS/Driver 的?它不像 WINAPI 调用或 SYSCALLs 是吗?

最佳答案

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

enter image description here

为了缓解这个问题,您可以假设 winpcap 存在于

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

通过这样的设置,您的用户在遇到这些错误时会更加清楚可能是什么问题。

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

  • 动态使用 winpcap,方法是使用 LoadLibrary() 显式加载它,使用 GetProcAddress() 获取方法地址,如果找不到则跳出。

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

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

请注意,动态使用 winpcap 的最后一个选项是最不方便的一个。如果您只是尝试,您应该遵循官方指南。您没有说明您使用的是什么编译器,但是概述了使用 winpcap 的官方方式 in this document .

通常 winpcap 与驱动程序异步交互,但作为 winpcap 的用户,您应该坚持使用官方接口(interface),而不是直接调用驱动程序。这是它如何工作的高级图表。我从NPF driver internals manual网页。我们鼓励您阅读它,并跟进具体问题。

Source: www.winpcap.org/docs/docs_412/html/group__NPF.html

关于c++ - Winpcap 驱动函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813640/

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