可利用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;
}