|
<火山程序 类型 = "通常" 版本 = 1 />
类 流量统计类 <公开 折叠 @视窗.预定义宏 = "_WIN32_WINNT=0x600" @视窗.外部头文件 = "Iphlpapi.h" @视窗.外部库 = "Iphlpapi.lib">
{
方法 获取网卡接口信息 <公开 静态 类型 = 整数 折叠 @嵌入式方法 = "">
参数 table <类型 = MIB_IF_TABLE2指针>
{
@ GetIfTable2(&@<table>)
}
}
类 MIB_IF_ROW2 <公开 注释 = "成员太多了,只封一部分"
注释 = "https://learn.microsoft.com/zh-cn/windows/win32/api/netioapi/ns-netioapi-mib_if_row2" 折叠
@别名 = "MIB_IF_ROW2" @别名类型 = 本地结构>
{
变量 InterfaceIndex <公开 类型 = 整数 @输出名 = "InterfaceIndex">
变量 Description <公开 类型 = 文本指针 @输出名 = "Description">
变量 InOctets <公开 类型 = 长整数 @输出名 = "InOctets">
变量 OutOctets <公开 类型 = 长整数 @输出名 = "OutOctets">
}
类 MIB_IF_TABLE2指针 <公开 折叠 @别名 = "PMIB_IF_TABLE2" @别名类型 = 本地参考类型>
{
变量 成员数 <公开 类型 = 整数 注释 = "接口数量" @输出名 = "NumEntries">
方法 销毁 <公开 静态 注释 = "不再使用时必须调用此方法释放内存" 折叠 @嵌入式方法 = "">
参数 本结构指针 <类型 = MIB_IF_TABLE2指针>
{
@ FreeMibTable(@<本结构指针>)
}
方法 取成员 <公开 静态 类型 = MIB_IF_ROW2 折叠 @嵌入式方法 = "">
参数 本结构指针 <类型 = MIB_IF_TABLE2指针>
参数 索引 <@匹配类型 = 通用整数型>
{
@ @<本结构指针>->Table[@<索引>]
}
方法 枚举循环 <公开 静态 折叠 @嵌入式方法 = "name = mib_counter\r\nhas_loop_body = true">
参数 本结构指针 <类型 = MIB_IF_TABLE2指针>
{
@ for (ULONG __mib_if_table2_itr = 0; __mib_if_table2_itr < @<本结构指针>->NumEntries; __mib_if_table2_itr++)
}
方法 取枚举值 <公开 静态 类型 = MIB_IF_ROW2 折叠 @嵌入式方法 = "parent = mib_counter">
参数 本结构指针 <类型 = MIB_IF_TABLE2指针>
{
@ @<本结构指针>->Table[__mib_if_table2_itr]
}
}
类 例程 <折叠>
{
方法 例子 <公开 静态>
{
变量 MIB <类型 = MIB_IF_TABLE2指针>
如果 (流量统计类.获取网卡接口信息 (MIB) == 0)
{
MIB.枚举循环 ()
{
调试输出 (MIB.取枚举值 ().InterfaceIndex, MIB.取枚举值 ().Description.取文本 (), MIB.取枚举值 ().InOctets, MIB.取枚举值 ().OutOctets)
}
MIB.销毁 ()
}
}
}
|
|