0

我正在尝试使用 Winpcap PacketRequest() 函数(位于 packet32.h 中)将 OID 发送到网络适配器。它适用于 XP32,不适用于 Win7 32 和 Win7 64(在 Win7 64 中我得到最后一个错误代码 1,在 32 中我不知道 - 我目前无法访问 32 位)。我查看了 PacketRequest() 函数的来源 - 它调用 DeviceIoControl(),这是失败的函数,因此 PacketRequest() 失败。

我是否使用了错误的 Winpcap 库?(我已经安装了 WinPcap_4_1_2.exe)

为什么win7不能运行?

提前致谢。

4

1 回答 1

-1

我可以看看你的启动代码吗?听起来您正在加载 dll 并尝试调用一些内部方法,

你应该坚持使用 api,直到你知道 winpcap 是如何在内部工作的。

要将原始数据包写入网卡,您应该使用 api 函数

int pcap_sendpacket  ( pcap_t *  p,  
                       u_char *  buf,  
                       int  size ) 

http://www.winpcap.org/docs/docs_41b5/html/group__wpcapfunc.html#g51dbda0f1ab9da2cfe49d657486d50b2

在你可以这样做之前,你必须打开一个网络适配器

pcap_t* pcap_open_live  ( const char *  device,  
                          int  snaplen,  
                          int  promisc,  
                          int  to_ms,  
                          char *  ebuf) 

http://www.winpcap.org/docs/docs_41b5/html/group__wpcapfunc.html#gae6abe06e15c87b803f69773822beca8

没有看到你的代码,我帮不上什么忙。我编写了一个使用 winpcap 的应用程序,它可以在 xp(32/64)、vista(32/64)、win7(32/64) 上正常运行。

于 2011-07-29T23:26:20.733 回答