|
|
发表于 2013-12-15 04:09:46
|
显示全部楼层
贵州省贵阳市
[e]
.版本 2
.子程序 ListAdapters
.参数 sEnumerator, 文本型
.参数 网卡信息, 模块_网卡信息, 数组
.局部变量 hkKey, 整数型
.局部变量 hDevInfo, 整数型
.局部变量 DataT, 整数型
.局部变量 DeviceInfoData, SP_DEVINFO_DATA
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 BufferSize, 整数型
.局部变量 RegType, 整数型
.局部变量 sDriver, 文本型
.局部变量 sClass, 文本型
.局部变量 sDevice, 文本型
.局部变量 sInstanceID, 文本型
.局部变量 sNetCfgIID, 文本型
.局部变量 sNetWorkAddress, 文本型
.局部变量 regpath, 文本型
hDevInfo = SetupDiGetClassDevs (0, sEnumerator, 0, 位或 (#DIGCF_PRESENT, #DIGCF_ALLCLASSES))
.如果真 (hDevInfo ≠ #INVALID_HANDLE_VALUE)
DeviceInfoData.cbSize = 取结构数据尺寸 (DeviceInfoData) ÷ 2
.判断循环首 (SetupDiEnumDeviceInfo (hDevInfo, i, DeviceInfoData) ≠ 0)
' Class 名为 Net 则为网络适配器
BufferSize = 0
.判断循环首 (SetupDiGetDeviceRegistryProperty (hDevInfo, DeviceInfoData, #SPDRP_CLASS, DataT, sClass, BufferSize, BufferSize) = 0)
sClass = 取空白文本 (BufferSize)
.判断循环尾 ()
' '本源码来自:爱e编程(www.2ebc.com)
' 获取网络适配器的注册表相关信息路径
BufferSize = 128
sDriver = 取空白文本 (BufferSize)
.判断循环首 (SetupDiGetDeviceRegistryProperty (hDevInfo, DeviceInfoData, #SPDRP_DRIVER, DataT, sDriver, BufferSize, BufferSize) = 0)
.如果 (GetLastError () = #ERROR_INSUFFICIENT_BUFFER)
sDriver = 取空白文本 (BufferSize × 2)
.否则
跳出循环 ()
.如果结束
' '本源码来自:爱e编程(www.2ebc.com)
.判断循环尾 ()
' 获取网络适配器名称描述
BufferSize = 0
sDevice = 取空白文本 (1)
.判断循环首 (SetupDiGetDeviceRegistryProperty (hDevInfo, DeviceInfoData, #SPDRP_DEVICEDESC, DataT, sDevice, BufferSize, BufferSize) = 0)
sDevice = 取空白文本 (BufferSize)
.判断循环尾 ()
' 获取网络适配器识别码,用于匹配网卡的物理地址
BufferSize = 128
sInstanceID = 取空白文本 (BufferSize)
.判断循环首 (SetupDiGetDeviceInstanceId (hDevInfo, DeviceInfoData, sInstanceID, 取文本长度 (sInstanceID), BufferSize) = 0)
.如果 (GetLastError () = #ERROR_INSUFFICIENT_BUFFER)
sInstanceID = 取空白文本 (BufferSize × 2)
.否则
跳出循环 ()
.如果结束
' '本源码来自:爱e编程(www.2ebc.com)
.判断循环尾 ()
' 用 NetCfgInstanceId 匹配网卡名称
.如果真 (寻找文本 (sClass, “Net”, 1, 假) ≠ -1)
regpath = “SYSTEM\CurrentControlSet\Control\Class\” + sDriver
.如果真 (RegOpenKey (#HKEY_LOCAL_MACHINE, regpath, hkKey) = #ERROR_SUCCESS)
sNetCfgIID = 取空白文本 (80)
BufferSize = 80
.如果真 (RegQueryValueEx (hkKey, “NetCfgInstanceId”, 0, RegType, sNetCfgIID, BufferSize) = #ERROR_SUCCESS)
.计次循环首 (取数组成员数 (网卡信息), j)
.如果真 (网卡信息 [j].网卡名称 = sNetCfgIID)
跳出循环 ()
.如果真结束
' '本源码来自:爱e编程(www.2ebc.com)
.计次循环尾 ()
.如果真结束
.如果真结束
RegCloseKey (hkKey)
.如果真 (j ≤ 取数组成员数 (网卡信息))
网卡信息 [j].注册表路径 = regpath
网卡信息 [j].接口类型 = sEnumerator
网卡信息 [j].索引 = i
.如果真结束
.如果真结束
i = i + 1
.判断循环尾 ()
.如果真结束
SetupDiDestroyDeviceInfoList (hDevInfo)
[/e] |
|