2010-09-13 68 views
0

我需要確定計算機是否使用移動連接(例如3G,EDGE,GPRS)連接到互聯網。我發現this identical question,但接受的答案對我來說並不是很有幫助... System.Net.NetworkInformation.NetworkInterface類暴露了一些屬性,但沒有任何東西可以幫助我確定它是否是移動連接。檢測計算機在Windows上是否使用移動連接(3G/EDGE/GPRS)

我的應用程序是在.NET中,但我也有興趣在從Win32或WMI

回答

1

我認爲,如果你查詢有源器件爲它的Mobile Broadband狀態,它可能工作的解決方案,因爲如果它是一個移動寬帶設備它應該返回狀態,但否則我認爲它會返回一個錯誤。

這篇文章MB Miniport Driver Initialization有一個圖表顯示如何做這樣的事情。從該頁面引用:下圖表示確定接口是否被限定爲MB接口並收集有關設備功能的信息的過程。

從來沒有嘗試過自己,所以我不能確定上述,我不能表現出任何的示例代碼,但有對可能含有的東西在這裏有用的樣本部分:Network Samples

編輯:代碼段在舊新聞組中被稱爲諾曼迪亞蒙的人posting

DWORD PhysicalMediumQuery = OID_GEN_PHYSICAL_MEDIUM; 
NDIS_PHYSICAL_MEDIUM PhysicalMediumResult; 
DWORD PhysicalMediumResultLength; 
if (!DeviceIoControl(DeviceHandle, IOCTL_NDIS_QUERY_GLOBAL_STATS, 
    &PhysicalMediumQuery, sizeof PhysicalMediumQuery, 
    &PhysicalMediumResult, sizeof PhysicalMediumResult, 
    &PhysicalMediumResultLength, NULL)) 
{ /* do error handling here */ } 
+0

謝謝,它看起來很有希望。然而,它看起來相當複雜,我不知道如何使用它... – 2010-09-13 12:24:43

+0

@Thomas:是的,正如我所說,不幸的是,我從來沒有使用它。不過,我認爲你使用'DeviceIoControl'(http://msdn.microsoft.com/en-us/library/aa363216%28VS.85%29.aspx)函數來執行實際的查詢,所以它可能值得尋找關於這方面的信息。我會在舊的新聞組發佈的一個可能的代碼片段中更新我的答案,以防有所幫助。 – 2010-09-13 12:52:45

+0

謝謝!你知道我如何獲得設備句柄嗎? – 2010-09-13 13:18:26

相關問題