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);