深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(2)
2009-09-11 00:00:00 来源:WEB开发网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的访问就需要先获得该互斥信号后再进行访问。示例代码如下所示:
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接