可利用SDK API:GetAdaptersInfo以及GetIfEntry實(shí)現(xiàn)。
GetAdaptersInfo返回系統(tǒng)中的所有網(wǎng)卡信息。
GetIfEntry則返回制定網(wǎng)口的速率、狀態(tài)等信息。
如果覺(jué)得將相關(guān)數(shù)據(jù)結(jié)構(gòu)改造到VB下很痛苦的話,可編寫(xiě)一個(gè)短小的DLL完成網(wǎng)口檢測(cè)工作,并僅返回檢測(cè)結(jié)果即可。
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;
}