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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 1.4 packet.dll对应的函数接口1.4.1 关键结构体_ADAPTER_INFO结构体_ADAPTER_INFO包含了系统上所安装适配器的可理解信息,包含用户所需的所有附加信息,深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(2)(2),该结构体的定义如下:typede

1.4    packet.dll对应的函数接口

1.4.1        关键结构体_ADAPTER_INFO

结构体_ADAPTER_INFO包含了系统上所安装适配器的可理解信息,包含用户所需的所有附加信息。该结构体的定义如下:

typedef struct _ADAPTER_INFO
{
    struct _ADAPTER_INFO *Next;             //指向链表中的下一个节点
    CHAR Name[ADAPTER_NAME_LENGTH + 1];     //描述该适配器的名字
    CHAR Description[ADAPTER_DESC_LENGTH + 1]; //适配器可理解的描述
UINT MacAddressLen;                     //链路层地址的长度
    UCHAR MacAddress[MAX_MAC_ADDR_LENGTH];  //链路层地址
    NetType LinkLayer;              //适配器的物理特性。该NetType结构体
//包含了该适配器得链路类型与速度
    PNPF_IF_ADDRESS_ITEM pNetworkAddresses;//指向一个网络地址链表,
//每一个节点描述该适配器的所有网络地址
    UINT Flags;         //适配器标识。使用Netmon API或dagc API,
//告诉该适配器是否用不同的方式对待。
}
ADAPTER_INFO, *PADAPTER_INFO;

在packetNtx\Dll\AdInfo.c文件中声明了下列两个全局变量:

PADAPTER_INFO g_AdaptersInfoList = NULL;  
HANDLE g_AdaptersInfoMutex = NULL;

其中g_AdaptersInfoList为全局适配器的链表,当应用程序连接packet.dll时创建该链表。g_AdaptersInfoMutex是保护g_AdaptersInfoList链表的互斥信号。

注意,把ADAPTER_INFO 作为一个参数的API,都假设获取了该互斥信号后再进行访问。换句话说,如果哪个API没有把ADAPTER_INFO 作为一个参数,那么对g_AdaptersInfoList的访问就需要先获得该互斥信号后再进行访问。示例代码如下所示:

上一页  1 2 3 4 5 6  下一页

Tags:深度 剖析 WinPcap

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