检查是否存在TCP / IP连接,以及是否为WiFi或3G - Windows Mobile 6.5 - C / C ++

时间:2011-07-04 07:53:40

标签: c++ windows-mobile wifi tcp

我需要在Windows Mobile 6.5 C / C ++应用程序中检测是否存在TCP / IP连接,如果是,则检测是否为WiFi或3G。我怎么能这样做?我找到了一些C#样本,但没有用于C / C ++。

任何提示都会受到赞赏。

TIA, MeCoco

2 个答案:

答案 0 :(得分:1)

使用Connection Manager 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;
}

答案 1 :(得分:0)

我以前没有真正做到这一点,所以这个答案将是一个有根据的猜测。

我的猜测是,首先你要通过尝试ping或解决一些已知良好的远程地址来查看你是否有任何连接。如果可行,您可以查看Connection Manager APIs以查找正在用于通信的连接。

此时你可能不知道它是WiFi还是3G。您可以use ossvcs.dll推断它基于无线电类型。