2.5.2 Packet.dll库中的重要函数

Packet.dll库中的重要函数简介如下。

PacketGetAdapterNames函数用于获取可用网络适配器的列表,以及它们对应的描述,其原型如下:


BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize);


PacketGetNetInfoEx函数用于获得一个适配器的所有地址信息,诸如IP地址、网络掩码地址与广播地址等,其原型如下:


BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName,npf_if_addr*buffer,PLONG NEntries);


PacketOpenAdapter函数用于打开一个适配器,其原型如下:


LPADAPTER PacketOpenAdapter(PCHAR AdapterNameWA);


PacketCloseAdapter函数用于关闭一个给定的适配器并释放相关的ADAPTER结构体资源,其原型如下:


VOID PacketCloseAdapter(LPADAPTER lpAdapter);


PacketSendPacket函数用于发送封装后的数据包到网络上,其原型如下:


BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);


PacketSendPackets函数用于把发送队列中的待发数据包发送到网络上,其原型如下:


INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size,BOOLEAN Sync);


PacketAllocatePacket函数用于分配一个_ADAPTER结构体内存空间,其原型如下:


LPPACKET PacketAllocatePacket(void);


PacketInitPacket函数主要用于初始化一个_PACKET结构体,其原型如下:


VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length);


PacketFreePacket函数用于释放一个_ADAPTER结构体内存空间,其原型如下:


VOID PacketFreePacket(LPPACKET lpPacket);


PacketReceivePacket函数用于从NPF驱动程序中读取数据,其原型如下:


BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);


PacketSetHwFilter函数用于给到来的数据包设置一个硬件过滤条件,其原型如下:


BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter);


PacketSetNumWrites函数用于设置单个数据包重复发送的次数,其原型如下:


BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites);


PacketRequest函数用于在驱动程序上执行一个参数的查询/设置操作,其原型如下:


BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData);


PacketSetBuff函数用于设置一个与捕获实例相关的内核缓冲区大小,其原型如下:


BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim);


PacketSetBpf函数用于设置一个内核级的数据包过滤器,其原型如下:


BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program*fp);


PacketGetStats函数用于为当前捕获会话返回状态统计信息值,其原型如下:


BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat*s);


PacketGetStatsEx函数用于返回当前捕获会话的状态统计信息值,它为PacketGetStats函数的加强版(具体内容见后面的章节),其原型如下:


BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat*s;)


PacketGetNetType函数用于返回一个适配器网络数据链路层的类型信息,其原型如下:


BOOLEAN PacketGetNetType(LPADAPTER AdapterObject,NetType*type);


PacketSetReadTimeout函数用于设置一个适配器上读操作的超时时间,其原型如下:


BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout);


PacketSetMode函数用于设置NPF的工作模式,其原型如下:


BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode);


PacketSetMinToCopy函数用于定义最少字节数,对适配器执行一次读操作时,只有内核缓冲区中的数据达到该字节数后才可以返回,其原型如下:


BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes);


PacketSetDumpName函数用于告诉内核驱动程序NPF内核转储文件的名称,其原型如下:


BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject,void*name,int len);


PacketSetDumpLimits函数用于设置内核转储的限制值,包括文件所能存储的最大字节数与最大数据包数,其原型如下:


BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject,UINT maxflesize,UINT maxnpacks);


PacketIsDumpEnded函数用于返回内核转储过程的状态,比如告诉通过PacketSetDumpLimits函数设置的一个限制是否已经达到,其原型如下:


BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject,BOOLEAN sync);


PacketSetLoopbackBehavior函数用于设置NPF驱动程序对环回数据的处理方式(捕获或丢弃),其原型如下:


BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject,UINT LoopbackBehavior);