我需要確定計算機是否使用移動連接(例如3G,EDGE,GPRS)連接到互聯網。我發現this identical question,但接受的答案對我來說並不是很有幫助... System.Net.NetworkInformation.NetworkInterface
類暴露了一些屬性,但沒有任何東西可以幫助我確定它是否是移動連接。檢測計算機在Windows上是否使用移動連接(3G/EDGE/GPRS)
我的應用程序是在.NET中,但我也有興趣在從Win32或WMI
我需要確定計算機是否使用移動連接(例如3G,EDGE,GPRS)連接到互聯網。我發現this identical question,但接受的答案對我來說並不是很有幫助... System.Net.NetworkInformation.NetworkInterface
類暴露了一些屬性,但沒有任何東西可以幫助我確定它是否是移動連接。檢測計算機在Windows上是否使用移動連接(3G/EDGE/GPRS)
我的應用程序是在.NET中,但我也有興趣在從Win32或WMI
我認爲,如果你查詢有源器件爲它的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 */ }
謝謝,它看起來很有希望。然而,它看起來相當複雜,我不知道如何使用它... – 2010-09-13 12:24:43
@Thomas:是的,正如我所說,不幸的是,我從來沒有使用它。不過,我認爲你使用'DeviceIoControl'(http://msdn.microsoft.com/en-us/library/aa363216%28VS.85%29.aspx)函數來執行實際的查詢,所以它可能值得尋找關於這方面的信息。我會在舊的新聞組發佈的一個可能的代碼片段中更新我的答案,以防有所幫助。 – 2010-09-13 12:52:45
謝謝!你知道我如何獲得設備句柄嗎? – 2010-09-13 13:18:26