监听以太网(4) Packet32函数SDK
2010-07-11 20:44:40 来源:WEB开发网核心提示:Remarks:这个函数所接收的数据可以是一组Packets,也可以是网络流量的一个统计数据,监听以太网(4) Packet32函数SDK(6),依赖于网卡的工作模式,接收到的Packet的数量是可变的,丢失的包数等,Return Values:如果执行成功,它依赖于几个因素:当前存储在driver缓冲区中的Packe
Remarks:
这个函数所接收的数据可以是一组Packets,也可以是网络流量的一个统计数据,依赖于网卡的工作模式。
接收到的Packet的数量是可变的。它依赖于几个因素:当前存储在driver缓冲区中的Packet的数目,这些Packet的大小,分配给lpPacket参数的缓冲区的大小。
Packet存储在lpPacket结构的buffer缓冲区内,lpPacket->Length指示着复制到缓冲区的数据的大小。
它的实现也很简单:
先看看AdapterObject->ReadTimeOut是否是-1:
如果不是-1,则调用WaitForSingleObject等候AdapterObject->ReadEvent读事件触发,超时时间为AdapterObject->ReadTimeOut的数值。如果AdapterObject->ReadTimeOut为0,则永不超时。
如果是-1,就表明读完立即返回。
之后,调用ReadFile读取数据。
No.9. PacketGetStats (得到本次捕获的统计数据)
得到当前捕获进程的统计信息。
BOOLEAN PacketGetStats(
LPADAPTER AdapterObject,
struct bpf_stat *s
);
Parameters:
AdapterObject:
[in] 指向一个_ADAPTER结构的指针。
s:
[in, out] bpf_stat结构,通过它,我们可以知道接收到的包数,丢失的包数等。
Return Values:
如果执行成功,返回非零值。
Usage:
C/C++ Usage Sample
struct bpf_stat stat;
PacketGetStats(lpAdapter,&stat) ;
更多精彩
赞助商链接