Определите, использует ли компьютер мобильное соединение (3G / EDGE / GPRS) в Windows - PullRequest
0 голосов
/ 13 сентября 2010

Мне нужно определить, подключен ли компьютер к Интернету с помощью мобильного подключения (например, 3G, EDGE, GPRS). Я нашел этот идентичный вопрос , но принятый ответ мне не очень помог ... Класс System.Net.NetworkInformation.NetworkInterface предоставляет несколько свойств, но ничего, что не может помочь мне определить, является ли это мобильным соединением.

Мое приложение находится в .NET, но меня также интересуют решения, включающие Win32 или WMI

1 Ответ

1 голос
/ 13 сентября 2010

Я думаю, что это может сработать, если вы запросите у активного устройства статус Mobile Broadband , поскольку, если это устройство Mobile Broadband, оно должно возвращать статус, но в противном случае я предполагаю, что оно вернет ошибку.

Эта статья, Инициализация драйвера минипорта , содержит диаграмму, показывающую, как сделать что-то подобное. Цитата с этой страницы: Следующая диаграмма представляет процесс, используемый для определения того, является ли интерфейс квалифицированным как интерфейс MB, и для сбора информации о возможностях устройства.

Никогда не пробовал сам, поэтому я не уверен в вышеизложенном, и я не могу показать пример кода, но здесь есть раздел для примеров, который может содержать что-то полезное: Образцы сети

Редактировать: фрагмент кода от человека по имени Норман Диамон в старой группе новостей публикация

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 */ }
...