WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(七)——获得与释放网络适配器设... 阅读

深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(1)

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示:通常,编写基于WinPcap应用程序的第一件事情,深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(1),就是获得已连接的网络适配器设备列表,同时在程序结束时确保释放获取的设备列表,则为链表的尾部*/struct pcap_if *next;/*给pcap_open_live函数传递的一个描述设备名称的字

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器设备列表。同时在程序结束时确保释放获取的设备列表。

深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(1)

图片看不清楚?请点击这里查看原图(大图)。

图6-1函数调用关系图

1.1    wpcap.dll导出的相应函数接口

wpcap.dll为了获得与释放已连接的网络适配器设备列表,提供了下列函数:

文件\wpcap\libpcap\pcap\pcap.h中

struct pcap_if;
struct pcap_addr;
 
int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf);
void pcap_freealldevs(pcap_if_t *alldevsp ) ;

文件wpcap\libpcap\remote-ext.h中

int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf);

1.1.1        pcap_if结构体

函数pcap_findalldevs_ex或pcap_findalldevs分别返回一个 pcap_if_t类型的链表alldevs或alldevsp。每个pcap_if_t结构体都包含一个适配器的详细信息。其中成员 name 和 description 分别表示一个适配器的名称和一个更容易让人理解的描述。该结构体的定义如下:

typedef struct pcap_if pcap_if_t;
 
struct pcap_if {
/*如果不为NULL,则指向链表的下一个元素。如果为NULL,则为链表的尾部*/
struct pcap_if *next;
/*给pcap_open_live函数传递的一个描述设备名称的字符串指针*/
char *name;   
/*如果不为NULL,则指向描述设备的一个可读字符串*/
char *description;
/*一个指向接口地址链表的第一个元素的指针*/
struct pcap_addr *addresses;
/*
*PCAP_IF_接口标志。当前仅有的可能标志为PCAP_IF_LOOPBACK,
*如果接口是回环的则设置该标志
*/
bpf_u_int32 flags;
};

1 2 3 4 5 6  下一页

Tags:深度 剖析 WinPcap

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