Winpcap 和 DeviceIoControl - Win7 上的错误代码 1
Posted
技术标签:
【中文标题】Winpcap 和 DeviceIoControl - Win7 上的错误代码 1【英文标题】:Winpcap and DeviceIoControl - Error code 1 on Win7 【发布时间】:2011-07-24 08:55:31 【问题描述】:我正在尝试使用 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】:我可以看看你的启动代码吗? 听起来您正在加载 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) 没有问题。
【讨论】:
以上是关于Winpcap 和 DeviceIoControl - Win7 上的错误代码 1的主要内容,如果未能解决你的问题,请参考以下文章
DeviceIoControl 返回 ERROR_ACCESS_DENIED
带有输入无符号字符缓冲区 C++ 的 DeviceIoControl