可利用SDK API:GetAdaptersInfo以及GetIfEntry实现。
GetAdaptersInfo返回系统中的所有网卡信息。
GetIfEntry则返回制定网口的速率、状态等信息。
如果觉得将相关数据结构改造到VB下很痛苦的话,可编写一个短小的DLL完成网口检测工作,并仅返回检测结果即可。
VC代码:
DWORD dwOutBufLen=0;
PIP_ADAPTER_INFO pAdapterInfo=NULL,pAdapter=NULL;
MIB_IFROW zSNMP;
char sTemp[20];
int iReturn;
iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);
if(iReturn!=ERROR_BUFFER_OVERFLOW)
{
return 0;
}
pAdapterInfo =(PIP_ADAPTER_INFO) HeapAlloc(GetProcessHeap(), 0, dwOutBufLen);
iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);
if(iReturn!=ERROR_SUCCESS)
{
HeapFree(GetProcessHeap(), 0, pAdapterInfo);
return 0;
}
pAdapter=pAdapterInfo;
//find if there is ppp adapter
while(pAdapter!=NULL )
{
zSNMP.dwIndex = pAdapter-> Index;
iReturn=GetIfEntry(&zSNMP);
if(iReturn!=NO_ERROR)
return 0;
m_iIfSpeed=zSNMP.dwSpeed/(1000*1000);
m_iIfAdminStatus=zSNMP.dwAdminStatus;
m_iIfOperStatus=zSNMP.dwOperStatus;
…
pAdapter=pAdapter-> Next;
}