Проверьте, есть ли соединение TCP / IP и есть ли WiFi или 3G - Windows Mobile 6.5 - C / C ++ - PullRequest
1 голос
/ 04 июля 2011

Мне нужно в моем приложении Windows Mobile 6.5 C / C ++ определить, есть ли соединение TCP / IP, и если да, то определить, является ли это WiFi или 3G. Как я мог это сделать? Я нашел несколько примеров C #, но ничего для C / C ++.

Любой совет будет оценен.

ТИА, MeCoco

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Это возможно с помощью API-интерфейса диспетчера подключений.Имя функции: ConnMgrQueryDetailedStatus . CONNMGR_CONNECTION_DETAILED_STATUS поля структуры, которые вас интересуют: dwParams, dwType и dwSubtype.

// TODO: Fill in the structure using ConnMgrQueryDetailedStatus in a loop until it succeeds.

// Check to see if there is an active Wi-Fi connection currently available to ConnMgr.
BOOL IsWiFiAvailable(CONNMGR_CONNECTION_DETAILED_STATUS* ccds)
{
     return ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_SUBTYPE && 
            ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_TYPE &&
            ccds->dwType == CM_CONNTYPE_NIC &&
            ccds->dwSubtype == CM_CONNSUBTYPE_NIC_WIFI;
}


// Check to see if there is an active Wi-Fi connection currently available to ConnMgr.
BOOL Is3GAvailable(CONNMGR_CONNECTION_DETAILED_STATUS* ccds)
{
     // This will return FALSE if you have non 3G GPRS connection available.
     return ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_SUBTYPE && 
            ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_TYPE &&
            ccds->dwType == CM_CONNTYPE_CELLULAR_GPRS &&
            ccds->dwSubtype == CM_CONNSUBTYPE_CELLULAR_UMTS;
}
0 голосов
/ 04 июля 2011

Я на самом деле не делал этого раньше, поэтому этот ответ будет обоснованным предположением.

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

В этот момент вы, вероятно, не будете знать, WiFi это или 3G.Возможно, вы сможете использовать ossvcs.dll , чтобы определить, какая из них основана на типе радио.

...