关于WM下创建和删除GPRS接入点

序言:当我们在手机上开发联网功能时,可以使用手机上设置好的接入点实现手机联网,但是有时候手机的设置不一定会正确,这时如果还是以手机的接入点来联网,程序有出错,我们可以通过程序在手机上创建接入点,然后再通过该接入点进行联网。

创建接入点

void CCommunicate::CreateAccessPoint()   
{   
        CString strFavoriteXml =    
                L"<wap-provisioningdoc>"    
                L"<characteristic type=\"CM_Networks\">"  
                L"<characteristic type=\"Test_GPRS\">"  
                L"<parm name=\"DestId\" value=\"{D1D06580-C364-55ec-9421-6ACF34129C58}\" />"  
                L"</characteristic>"  
                L"</characteristic>"  
                L"<characteristic type=\"CM_GPRSEntries\">"  
                L"<characteristic type=\"Test_GPRS\">"  
                L"<parm name=\"DestId\" value=\"{D1D06580-C364-55ec-9421-6ACF34129C58}\" />"  
                L"<characteristic type=\"DevSpecificCellular\">"  
                L"<parm name=\"BearerInfoValid\" value=\"1\" />"  
                L"<parm name=\"GPRSInfoValid\" value=\"1\" />"  
                L"<parm name=\"GPRSInfoProtocolType\" value=\"2\" />"  
                L"<parm name=\"GPRSInfoL2ProtocolType\" value=\"PPP\" />"  
                L"<parm name=\"GPRSInfoAccessPointName\" value=\"cmwap\" />"  
                L"<parm name=\"GPRSInfoAddress\" value=\"\" />"  
                L"<parm name=\"GPRSInfoDataCompression\" value=\"1\" />"  
                L"<parm name=\"GPRSInfoHeaderCompression\" value=\"1\" />"  
                L"<parm name=\"GPRSInfoParameters\" value=\"\" />"  
                L"</characteristic>"  
                L"</characteristic>"  
                L"</characteristic>"  
                L"<characteristic type=\"CM_ProxyEntries\">"  
                L"<characteristic type=\"WAP\">"  
                L"<parm name=\"SrcId\" value=\"{D1D06580-C364-55ec-9421-6ACF34129C58}\" />"  
                L"<parm name=\"DestId\" value=\"{436EF144-B4FB-4863-A041-8F905A62C572}\" />"  
                L"<parm name=\"Proxy\" value=\"10.0.0.172:80\" />"  
                L"<parm name=\"Enable\" value=\"1\" />"  
                L"<parm name=\"Type\" value=\"1\" />"  
                L"</characteristic>"  
                L"</characteristic>"  
                L"</wap-provisioningdoc>";   
  
        LPWSTR pszwXMLout = NULL;   
        HRESULT hr = DMProcessConfigXML(strFavoriteXml, CFGFLAG_PROCESS, &pszwXMLout);   
  
        if ( pszwXMLout )   
        {   
                delete [] pszwXMLout;   
                pszwXMLout = NULL;   
        }   
} 
使用创建的接入点

int CCommunicate::CreateConnection( HANDLE *phConnection )   
{   
        HRESULT            hResult;   
        //        HANDLE             phConnection;   
        DWORD              dwStatus;    
        DWORD              dwResult;   
        CONNMGR_DESTINATION_INFO cdi;   
        int i;   
        for(i = 0; SUCCEEDED(ConnMgrEnumDestinations(i, &cdi)); i++)   
        {   
                if (0 == wcscmp(cdi.szDescription, _T("Test_GPRS")))   
                        break;   
        }   
        hResult = ConnMgrEnumDestinations(i, &cdi);   
        if (FAILED(hResult))   
        {   
                AfxMessageBox(L"ConnMgrEnumDestinations Error!");   
                return FALSE;   
        }   
        CONNMGR_CONNECTIONINFO ConnInfo;    
        ZeroMemory( &ConnInfo, sizeof( ConnInfo ) );    
        ConnInfo.cbSize = sizeof( ConnInfo );    
        ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;    
        ConnInfo.dwPriority = CONNMGR_PRIORITY_HIPRIBKGND;    
        ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP;   
        ConnInfo.bExclusive = FALSE;            
        ConnInfo.bDisabled = FALSE;    
        ConnInfo.guidDestNet = cdi.guid;   
        TRACE(_T("ConnectToHttpServer\n") );   
  
        dwStatus = CONNMGR_STATUS_CONNECTED;   
  
        hResult = ConnMgrEstablishConnectionSync( &ConnInfo, phConnection, 75000, &dwStatus );   
        if ( hResult != S_OK )   
        {   
                TRACE(_T("ConnMgrEstablishConnection is error\n") );   
                dwResult = GetLastError();   
                // for debug   
                CString tmp;   
                tmp.Format(_T("%ld"), dwStatus);   
                AfxMessageBox( tmp, MB_OK);   
                return S_FALSE;   
        }   
        else  
        {   
                AfxMessageBox(_T("ConnMgrEstablishEonnection is success\n"), MB_OK);   
                // do something   
        }   
        return S_OK;   
} 
删除创建的接入点

void CCommunicate::ReleaseAccessPoint()   
{   
        CString strFavoriteXml =    
                L"<wap-provisioningdoc>"  
                L"<characteristic type=\"CM_Networks\">"  
                L"<nocharacteristic type=\"Test_GPRS\"/>"  
                L"</characteristic>"    
                L"</wap-provisioningdoc>";   
        LPWSTR pszwXMLout = NULL;   
        HRESULT hr = DMProcessConfigXML(strFavoriteXml, CFGFLAG_PROCESS, &pszwXMLout);   
  
        if ( hr == S_OK)   
        {   
                AfxMessageBox( L"Delete access point success!");   
        }   
        else  
        {   
                AfxMessageBox( L"Delete access point failed!");   
        }   
        if ( pszwXMLout )   
        {   
                delete [] pszwXMLout;   
                pszwXMLout = NULL;   
        }   
}  

posted @ 2010-11-10 15:47  Eric_Su  阅读(714)  评论(0编辑  收藏  举报