WEB开发网
开发学院软件开发VC 监听以太网(3) Packet32数据结构说明 阅读

监听以太网(3) Packet32数据结构说明

 2010-07-11 20:44:41 来源:WEB开发网   
核心提示:Packet32包中的数据结构:第一个重要的数据结构:_ADAPTER(关于Network Adapter的)typedef struct _ADAPTER{ // 一个打开的NPF driver实例的句柄:HANDLE hFile;// 当前打开的网卡的名字:CHARSymbolicLink[MAX_LINK_NAM

Packet32包中的数据结构:

第一个重要的数据结构:_ADAPTER(关于Network Adapter的)

typedef struct _ADAPTER
{
// 一个打开的NPF driver实例的句柄:
HANDLE hFile;
// 当前打开的网卡的名字:
CHAR SymbolicLink[MAX_LINK_NAME_LENGTH];
// 在这块Adapter上,一个数据包被写的次数:
int NumWrites;

// 这块Adapter上的read操作的通知事件。它可以被传递给标准Win32函数(如WaitForSingleObject或者WaitForMultipleObjects),这样可以等待到driver的缓冲区内有数据到来。在同时等待几个事件的GUI程序中,它特别有用。在Windows2000/XP中,函数PacketSetMinToCopy()可以用来设置内核缓冲区中激发本事件的最小数据大小:

HANDLE ReadEvent;
// 设置一个时间,到时候,即使没有捕获任何包,read操作也会被释放,ReadEvent也会被触发:
UINT ReadTimeOut;
} ADAPTER, *LPADAPTER;

第二个重要的数据结构:_PACKET(关于Packet的)

typedef struct _PACKET
{
// 向后兼容用的:
HANDLE    hEvent;
// 向后兼容用的:
OVERLAPPED  OverLapped;
// 存放Packets的缓冲区:
PVOID    Buffer;
// 缓冲区的大小:
UINT     Length;
// 当前缓冲区中有效的字节数,如,上一次调用PacketReceivePacket()函数接收到的字节数:
DWORD    ulBytesReceived;
// 向后兼容用的:
BOOLEAN   bIoComplete
} PACKET, *LPPACKET;

第三个重要的数据结构:_PACKET_OID_DATA (关于OID请求的)

typedef struct _PACKET_OID_DATA
{
// OID的code,有效的OID code的定义参见ntddndis.h;比如:
// OID_GEN_SUPPORTED_LIST,OID_GEN_VENDOR_DESCRIPTION等:
ULONG Oid;
// 成员Data的长度:
ULONG Length;
// 存放发送给网卡或者从网卡接收的数据的缓冲区:
UCHAR Data[1];
}
typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;

1 2  下一页

Tags:监听 以太网 Packet

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接