判断网络是否可用:
具体可以参照: Windows CE Tools/wce500/Windows Mobile 5.0 Pocket PC SDK/Samples/CPP/Mfc/CMHELPER
HRESULT IsAvailableNetWork( LPCSTR strPathUrl , BOOL bProxy)
{
GUID guidNetWork;
HANDLE hConn;
//通过目标网络求出GUID
ConnMgrMapURL(strPathUrl , &guidNetWork, 0);
CONNMGR_CONNECTIONINFO ci = { 0 };
ci.cbSize = sizeof(ci);
ci.dwParams = CONNMGR_PARAM_GUIDDESTNET
| CONNMGR_PARAM_MAXCONNLATENCY;
ci.dwFlags = bProxy?CONNMGR_FLAG_PROXY_HTTP:0;
ci.ulMaxConnLatency = 4000; // 4 second
ci.bDisabled = TRUE;
ci.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
ci.guidDestNet = guidNetWork;
//创建一个连接请求
if( SUCCEEDED( hr = ConnMgrEstablishConnection(&ci, &hConn ) )
{
DWORD dwResult = WaitForSingleObject(hConn, 400);
switch (dwResult)
{
case WAIT_OBJECT_0:
{
DWORD dwStatus;
//当前连接状态
if( SUCCEEDED(ConnMgrConnectionStatus(hConn, &dwStatus)) &&
( (dwStatus ==CONNMGR_STATUS_CONNECTED) ||
(dwStatus == CONNMGR_STATUS_CONNECTIONDISABLED) ))
{
hr=S_OK;
PROXY_CONFIG ProxyInfo;
ZeroMemory(&ProxyInfo, sizeof(ProxyInfo));
ProxyInfo.dwType = CONNMGR_FLAG_PROXY_HTTP;
//功能交换信息与连接规划或连接服务提供商。
if (SUCCEEDED(ConnMgrProviderMessage( hConn, &IID_ConnPrv_IProxyExtension,
NULL, 0, 0, (PBYTE)&ProxyInfo, sizeof(ProxyInfo))))
{
if (ProxyInfo.dwType == CONNMGR_FLAG_PROXY_HTTP)
{
// SECURITY: Zero out the username/password from memory.
}
}
}
else
{
hr=S_FALSE;
}
break;
}
case WAIT_TIMEOUT:
hr=E_FAIL;
break;
}
//删除连接请求
ConnMgrReleaseConnection(hConn, FALSE);
}
}