[100分求助]如何使用VC程式設計獲取網路卡當前的狀態 - IT者
導讀:
至少需要獲取:
1、當前速度
2、是全雙工的,還是半雙工的
3、是否是自適應的
網友回覆:SetupDiEnumDeviceInterfaces
你查下,我覺得應該可以
網友回覆:用GetIfTable函式
網友回覆:SetupDiEnumDeviceInterfaces
網友回覆:up
網友回覆:引用 1 樓 greatws 的回覆:
SetupDiEnumDeviceInterfaces
你查下,我覺得應該可以
這是驅動級別使用的API吧.
網友回覆:引用樓主 aopha 的帖子:
至少需要獲取:
1、當前速度
2、是全雙工的,還是半雙工的
3、是否是自適應的
MSDN的程式碼
include
#include
#include
#include
#include
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */
int main()
{
// Declare and initialize variables.
DWORD dwSize = 0;
DWORD dwRetVal = 0;
int i, j;
/* variables used for GetIfTable and GetIfEntry */
MIB_IFTABLE *pIfTable;
MIB_IFROW *pIfRow;
// Allocate memory for our pointers.
pIfTable = (MIB_IFTABLE *) MALLOC(sizeof (MIB_IFTABLE));
if (pIfTable == NULL) {
printf("Error allocating memory needed to call GetIfTable/n");
return 1;
}
// Make an initial call to GetIfTable to get the
// necessary size into dwSize
dwSize = sizeof (MIB_IFTABLE);
if (GetIfTable(pIfTable, &dwSize, FALSE) == ERROR_INSUFFICIENT_BUFFER) {
FREE(pIfTable);
pIfTable = (MIB_IFTABLE *) MALLOC(dwSize);
if (pIfTable == NULL) {
printf("Error allocating memory needed to call GetIfTable/n");
return 1;
}
}
// Make a second call to GetIfTable to get the actual
// data we want.
if ((dwRetVal = GetIfTable(pIfTable, &dwSize, FALSE)) == NO_ERROR) {
printf("/tNum Entries: %ld/n/n", pIfTable->dwNumEntries);
for (i = 0; i < (int) pIfTable->dwNumEntries; i ) {
pIfRow = (MIB_IFROW *) & pIfTable->table[i];
printf("/tIndex[%d]:/t %ld/n", i, pIfRow->dwIndex);
printf("/tInterfaceName[%d]:/t %ws", i, pIfRow->wszName);
printf("/n");
printf("/tDescription[%d]:/t ", i);
for (j = 0; j < (int) pIfRow->dwDescrLen; j )
printf("%c", pIfRow->bDescr[j]);
printf("/n");
printf("/tType[%d]:/t ", i);
switch (pIfRow->dwType) {
case IF_TYPE_OTHER:
printf("Other/n");
break;
case IF_TYPE_ETHERNET_CSMACD:
printf("Ethernet/n");
break;
case IF_TYPE_ISO88025_TOKENRING:
printf("Token Ring/n");
break;
case IF_TYPE_PPP:
printf("PPP/n");
break;
case IF_TYPE_SOFTWARE_LOOPBACK:
printf("Software Lookback/n");
break;
case IF_TYPE_ATM:
printf("ATM/n");
break;
case IF_TYPE_IEEE80211:
printf("IEEE 802.11 Wireless/n");
break;
case IF_TYPE_TUNNEL:
printf("Tunnel type encapsulation/n");
break;
case IF_TYPE_IEEE1394:
printf("IEEE 1394 Firewire/n");
break;
default:
printf("Unknown type %ld/n", pIfRow->dwType);
break;
}
printf("/tMtu[%d]:/t/t %ld/n", i, pIfRow->dwMtu);
printf("/tSpeed[%d]:/t %ld/n", i, pIfRow->dwSpeed);
printf("/tPhysical Addr:/t ");
if (pIfRow->dwPhysAddrLen == 0)
printf("/n");
for (j = 0; j < (int) pIfRow->dwPhysAddrLen; j ) {
if (j == (pIfRow->dwPhysAddrLen - 1))
printf("%.2X/n", (int) pIfRow->bPhysAddr[j]);
else
printf("%.2X-", (int) pIfRow->bPhysAddr[j]);
}
printf("/tAdmin Status[%d]:/t %ld/n", i, pIfRow->dwAdminStatus);
printf("/tOper Status[%d]:/t ", i);
switch (pIfRow->dwOperStatus) {
case IF_OPER_STATUS_NON_OPERATIONAL:
printf("Non Operational/n");
break;
case IF_OPER_STATUS_UNREACHABLE:
printf("Unreachable/n");
break;
case IF_OPER_STATUS_DISCONNECTED:
printf("Disconnected/n");
break;
case IF_OPER_STATUS_CONNECTING:
printf("Connecting/n");
break;
case IF_OPER_STATUS_CONNECTED:
printf("Connected/n");
break;
case IF_OPER_STATUS_OPERATIONAL:
printf("Operational/n");
break;
default:
printf("Unknown status %ld/n", pIfRow->dwAdminStatus);
break;
}
printf("/n");
}
} else {
printf("GetIfTable failed with error: /n", dwRetVal);
if (pIfTable != NULL) {
FREE(pIfTable);
pIfTable = NULL;
}
return 1;
// Here you can use FormatMessage to find out why
// it failed.
}
if (pIfTable != NULL) {
FREE(pIfTable);
pIfTable = NULL;
}
return 0;
}
網友回覆:mark
網友回覆:mark
up
網友回覆:作業系統應該提供了API,查查肯定有的!
網友回覆:學習
up
網友回覆:6樓的方法不錯,學習了
網友回覆:多謝各位大蝦!
明天驗證一下,滿足要求給分。
不過6樓的方法中好像僅能獲取速度,那雙工還是半雙工,是否自適應如何得到?
本篇文章來源於 www.itzhe.cn IT者網站 原文連結:http://www.itzhe.cn/news/20081005/244468.html
本文轉自
http://www.itzhe.cn/news/20081005/244468.html
相關文章
- 求助,JAVA如何獲取系統當前所有程式Java
- javascript如何獲取當前網頁的url地址JavaScript網頁
- 求助:JSF中下拉框中如何控制預設狀態當前值選中?JS
- 直播平臺原始碼,快速獲取當前狀態列高度原始碼
- $request 請求方法 獲取 API 的當前使用者API
- js_原生js獲取當前的使用者ipJS
- jQuery如何獲取當前元素的索引jQuery索引
- 百度地圖JavaScript API獲取使用者當前經緯度並獲取使用者當前詳細地理位置地圖JavaScriptAPI
- js如何獲取當前使用者訪問的ip地址以及城市地區?JS
- 微信小程式獲取當前位置微信小程式
- jQuery如何獲取當前元素的兄弟元素jQuery
- 如何檢視資料庫當前的狀態?資料庫
- swoole websocket 使用 passport 無法獲取當前使用者問題WebPassport
- Flutter獲取當前網路型別Flutter型別
- python 如何獲取當前時間Python
- Java如何獲取當前執行緒Java執行緒
- 微信小程式直播狀態介面如何獲取微信小程式
- JVM 如何獲取當前容器的資源限制?JVM
- Spring Security - 獲取當前登入使用者的詳細資訊Spring
- Flutter 小知識,Key的使用(獲取當前點選Widget位置/獲取當前Widget大小)Flutter
- 使用者介面設計--系統的當前物件物件
- winform C# 獲取區分物理網路卡、虛擬網路卡及無線網路卡ORMC#
- JavaScript 獲取當前月份JavaScript
- JavaScript 獲取當前域名JavaScript
- javascript獲取當前urlJavaScript
- 如何用Java獲取當前時間戳?Java時間戳
- javascript如何獲取當前頁面的路徑JavaScript
- [提問交流]onethink框架,怎麼獲取當前使用者框架
- 獲取網路卡 IP
- php 獲取當前域名和當前協議PHP協議
- js獲取當前月份例項程式碼JS
- 如何用js獲取當前時間和ip地址以及當前城市JS
- js獲取當前電腦外網ip例項程式碼JS
- 統計當前系統中不同執行狀態的程式數量
- 如何獲取當前顯示其的解析度
- js外掛--獲取指定時間距離當前時間狀態:上週,當前周,前天,昨天,今天,明天,後天,當前周,下週。JS
- [React Native]獲取網路狀態React Native
- Java程式設計:通過獲取當前時間,判斷今天星期幾Java程式設計