Packet32 包中的函数及数据说明 数据结构:_ADAPTER(关于Netw ork Adapter 的) typedef struct _ADAPTER { HANDLE hFile; // 一个打开的NPF driver 实例的句柄: CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; // 当前打开的网卡的名字: int NumWrites; // 在这块Adapter 上,一个数据包被写的次数: HANDLE ReadEvent; /* 这块Adapter 上的read 操作的通知事件。它可以被传递给标准 Win32 函数(如 WaitForSingleObject 或者 WaitForMultipleObjects),这样可以等待到 driver 的缓冲区内有数据到来。在同时等待几个事件的GUI 程序中,它特别有用。在Windows2000/XP 中,函数PacketSetMinToCopy()可以用来设置内核缓冲区中激发本事件的最小数据大小:*/ UINT ReadTimeOut; // 设置一个时间,到时候,即使没有捕获任何包,read 操作也会被释放,ReadEvent 也会被触发: } ADAPTER, *LPADAPTER; 数据结构:_PACKET(关于Packet 的) typedef struct _PACKET { HANDLE hEvent; // 向后兼容用的: OVERLAPPED OverLapped; // 向后兼容用的: PVOID Buffer; // 存放 Packets 的缓冲区: UINT Length; // 缓冲区的大小: DWORD ulBytesReceived; // 当前缓 冲 区 中有 效 的字节 数,如 ,上一次调 用PacketReceivePacket()函数接收到的字节数: BOOLEAN bIoComplete // 向后兼容用的: } PACKET, *LPPACKET; 数据结构:_PACKET_OID_DATA (关于OID 请求的) typedef struct _PACKET_OID_DATA { ULONG Oid; // OID 的code,有效的OID code 的定义参见 ntddndis.h;比如:OID_GEN_SUPPORTED_LIST,OID_GEN_VENDOR_DESCRIPTION 等: ULONG Length; // 成员 Data 的长度: UCHAR Data[1]; // 存放发送给网卡或者从网卡接收的数据的缓冲区: } typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; 其他数据结构: npf_if_addr(网卡的地址): typedef struct npf_if_addr { struct sockaddr IPAddress; // IP address. struct sockaddr SubnetMask; // Netmask for that address. struct sockaddr Broadcast; // Broadcast address. }npf_if_addr; bpf_hdr(Packet Header): struct bpf_hdr { struct timeval bh_tstamp; // 捕获到的packet 的timestamp: UINT bh_caplen; // 捕获到的pa...