Winpcap和DeviceIoControl - Win7上的错误代码1

时间:2011-07-24 08:55:31

标签: winpcap oid deviceiocontrol

我正在尝试使用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上运行?

提前致谢。

1 个答案:

答案 0 :(得分:-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),没有问题。