windows获取网卡信息并判断是否是物理网卡 网络适配器的判断
来源:互联网 发布:javascript cookie实例 编辑:程序博客网 时间:2024/05/01 09:23
/***********************************************************************
函数名称 :IsLocalAdapter
函数功能 :根据适配器的名字,判断是否是本地适配器---主要通过注册表进行查看
函数参数 : 参数列表格式 [_IN_ _OUT_ _OPTION_] 参数名 说明信息
LPTSTR szName _IN_ 需要输入的适配器名字
返回值 : BOOL
------------------------------------------------------------------------
备注 :
************************************************************************/
BOOL IsLocalAdapter(LPSTR szName)
{
if (!szName)
{
return FALSE;
}
TCHAR szKeyName[260] = _T("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}");
HKEY hSubKey=NULL;
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_READ, &hSubKey);
if (lRet!=ERROR_SUCCESS)
{
return FALSE;
}
CHAR szDataBuf[260] = { 0 };
sprintf_s(szDataBuf, "%s\\Connection", szName);//格式化字符串
//打开格式化后的字符串
HKEY hLocalKey = NULL;
lRet = RegOpenKeyExA(hSubKey, szDataBuf, 0, KEY_READ, &hLocalKey);
if (ERROR_SUCCESS!=lRet)
{
RegCloseKey(hSubKey);
return FALSE;
}
//请求注册表中的值
DWORD dwType = REG_SZ;
TCHAR szData[250];
DWORD dwSize = 250;
lRet= RegQueryValueEx(hLocalKey, _T("PnPInstanceId"), 0, &dwType, (BYTE*)(szData), &dwSize);
if (ERROR_SUCCESS!=lRet)
{
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return FALSE;
}
if (0==_tcsncmp(szData,_T("PCI"),_tcslen(_T("PCI")))||0==_tcsncmp(szData,_T("USB"),_tcslen(_T("USB"))))
{
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return TRUE;
}
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return FALSE;
}
//获取网络适配器的数量
int GetNetworkAdapterCount()
{
PIP_ADAPTER_INFO pAdapterInfo= NULL;
ULONG OutBufLen = 0;
int nCount = 0;
//Get the required size of the buffer
if (GetAdaptersInfo(NULL, &OutBufLen) == ERROR_BUFFER_OVERFLOW)
{
int divisor = sizeof IP_ADAPTER_INFO;
if (sizeof time_t == 8)
divisor -= 8;
nCount = OutBufLen / divisor;
pAdapterInfo = new IP_ADAPTER_INFO[nCount];
//Get info for the adapters
if (GetAdaptersInfo(pAdapterInfo, &OutBufLen) != ERROR_SUCCESS)
{
//Call failed
delete[] pAdapterInfo;
pAdapterInfo = NULL;
nCount = 0;
}
}
int nResult=0;//最终物理网卡的数量
for (int i=0;i<nCount;++i)
{
if (IsLocalAdapter(pAdapterInfo->AdapterName))
{
++nResult;
}
pAdapterInfo = pAdapterInfo->Next;
}
delete []pAdapterInfo;
return nResult;
}
函数名称 :IsLocalAdapter
函数功能 :根据适配器的名字,判断是否是本地适配器---主要通过注册表进行查看
函数参数 : 参数列表格式 [_IN_ _OUT_ _OPTION_] 参数名 说明信息
LPTSTR szName _IN_ 需要输入的适配器名字
返回值 : BOOL
------------------------------------------------------------------------
备注 :
************************************************************************/
BOOL IsLocalAdapter(LPSTR szName)
{
if (!szName)
{
return FALSE;
}
TCHAR szKeyName[260] = _T("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}");
HKEY hSubKey=NULL;
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_READ, &hSubKey);
if (lRet!=ERROR_SUCCESS)
{
return FALSE;
}
CHAR szDataBuf[260] = { 0 };
sprintf_s(szDataBuf, "%s\\Connection", szName);//格式化字符串
//打开格式化后的字符串
HKEY hLocalKey = NULL;
lRet = RegOpenKeyExA(hSubKey, szDataBuf, 0, KEY_READ, &hLocalKey);
if (ERROR_SUCCESS!=lRet)
{
RegCloseKey(hSubKey);
return FALSE;
}
//请求注册表中的值
DWORD dwType = REG_SZ;
TCHAR szData[250];
DWORD dwSize = 250;
lRet= RegQueryValueEx(hLocalKey, _T("PnPInstanceId"), 0, &dwType, (BYTE*)(szData), &dwSize);
if (ERROR_SUCCESS!=lRet)
{
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return FALSE;
}
if (0==_tcsncmp(szData,_T("PCI"),_tcslen(_T("PCI")))||0==_tcsncmp(szData,_T("USB"),_tcslen(_T("USB"))))
{
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return TRUE;
}
RegCloseKey(hSubKey);
RegCloseKey(hLocalKey);
return FALSE;
}
//获取网络适配器的数量
int GetNetworkAdapterCount()
{
PIP_ADAPTER_INFO pAdapterInfo= NULL;
ULONG OutBufLen = 0;
int nCount = 0;
//Get the required size of the buffer
if (GetAdaptersInfo(NULL, &OutBufLen) == ERROR_BUFFER_OVERFLOW)
{
int divisor = sizeof IP_ADAPTER_INFO;
if (sizeof time_t == 8)
divisor -= 8;
nCount = OutBufLen / divisor;
pAdapterInfo = new IP_ADAPTER_INFO[nCount];
//Get info for the adapters
if (GetAdaptersInfo(pAdapterInfo, &OutBufLen) != ERROR_SUCCESS)
{
//Call failed
delete[] pAdapterInfo;
pAdapterInfo = NULL;
nCount = 0;
}
}
int nResult=0;//最终物理网卡的数量
for (int i=0;i<nCount;++i)
{
if (IsLocalAdapter(pAdapterInfo->AdapterName))
{
++nResult;
}
pAdapterInfo = pAdapterInfo->Next;
}
delete []pAdapterInfo;
return nResult;
}
阅读全文
0 0
- windows获取网卡信息并判断是否是物理网卡 网络适配器的判断
- windows下判断网卡是否是虚拟网卡的方式
- windows下判断网卡是否是虚拟网卡的方式
- 判断是本地网卡是物理网卡还是虚拟网卡
- ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态
- ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态
- linux中读取网卡信息(ip, mask, mac)以及判断物理网线是否插好的C程序---我亲自试了一下,还不错!
- 代码判断linux网卡是否是promisc模式
- windows下获取网卡信息
- Windows SDK获取网卡信息
- 获取本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息及网线是否插入状态
- C#判断是否存在已连接的真实网卡(NetConnectionStatus)
- aix 物理网卡信息
- JavaScript如何判断从表单中获取的信息判断是否是正整数
- 判断多网卡是否连接到网络
- 查询注册表判断是否使用无线网卡
- aircrack-ng判断网卡是否兼容
- Java获取物理网卡
- 数据结构-- 队列 循环与顺序
- sql case
- 第一阶段-入门详细图文讲解tensorflow1.4 -(八)tf.estimator构建数据预处理bostonHouse
- windows 7 下安装多个 apache 服务
- try catch 异常 字符串输出
- windows获取网卡信息并判断是否是物理网卡 网络适配器的判断
- vim
- 适配iOS 11和iPhone X——导航栏、UITableView
- Linux命令之 du命令
- 前端使用的network
- spring,mbatis整合报错:Mapped Statements collection does not contain
- 曙光HPC首席科学家吉青:高性能计算不只AI,曙光更注重技术创新
- RecyclerView的上拉加载
- C/C++之回调函数