青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數(shù)據(jù)加載中……

如何判斷GPRS的接入點

思路:用ConnMgrQueryDetailedStatus找到Dest GUID, 然后根據(jù)Dest GUID用DMProcessConfigXML函數(shù)透過CM_GPRSEntries Configuration Service Provider來查接入點名稱。
示例代碼:


#include <stdlib.h>
#include <windows.h>

#include <connmgr.h>
#include <Connmgr_status.h>
#include <Cfgmgrapi.h>
#include <strsafe.h>

//
//   FUNCTION: GetAPNFromEntryName(LPCTSTR szEntryName, LPTSTR szAPN, int cchAPN)
//
//   PURPOSE: Get the GPRS Access Point Name form the Entry Name
//
HRESULT GetAPNFromEntryName(LPCTSTR szEntryName, LPTSTR szAPN, int cchAPN)
{
    // parm query formating string of "CM_GPRSEntries Configuration Service Provider"
    LPCTSTR szFormat =    TEXT("<wap-provisioningdoc>")
                        TEXT("    <characteristic type=\"CM_GPRSEntries\">")
                        TEXT("        <characteristic type=\"%s\">")
                        TEXT("            <characteristic type=\"DevSpecificCellular\">")
                        TEXT("                <parm-query name=\"GPRSInfoAccessPointName\"/>")
                        TEXT("            </characteristic>")
                        TEXT("        </characteristic>")
                        TEXT("    </characteristic>")
                        TEXT("</wap-provisioningdoc>");
    HRESULT hr = E_FAIL;
    LPTSTR szOutput   = NULL;


    if(NULL == szEntryName)
        return E_INVALIDARG;


    // prepare the query string with the special entry name
    LPTSTR szInput = new TCHAR[_tcslen(szFormat) + _tcslen(szEntryName) + 10];
    if(NULL == hr)
        return E_OUTOFMEMORY;

    _stprintf(szInput, szFormat, szEntryName);
   

    // Process the XML.
    hr = DMProcessConfigXML(szInput, CFGFLAG_PROCESS, &szOutput);

    if(S_OK == hr)
    {
        hr = E_FAIL;

        // find the value of GPRSInfoAccessPointName param
        LPTSTR szAPNStrStart = _tcsstr(szOutput, TEXT("value=\""));
        if(NULL != szAPNStrStart)
        {
            szAPNStrStart += _tcslen(TEXT("value=\""));

            // find the end of value string
            LPTSTR szAPNStrEnd = _tcsstr(szAPNStrStart, TEXT("\""));
            if(NULL != szAPNStrEnd)
            {
                // set the null char at the end of the value string
                *szAPNStrEnd = TEXT('\0');

                // get the final Access Point Name string
                _tcsncpy(szAPN, szAPNStrStart, cchAPN);
                hr = S_OK;
            }
        }

    }

    // the caller must delete the XML returned from DMProcessConfigXML.
    delete[] szOutput;

    // clear the input string
    delete[] szInput;

    return hr;
}


//
// we will enum the all connected GPRS
// and display their entry name and APN on the message box
//
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
    TCHAR szAPN[200];

    DWORD dwSize = 0;
    HRESULT hr = E_FAIL;

    //
    // Get the the required size of the buffer
    // with which the function needs to be called on the next attempt.
    //
    hr = ConnMgrQueryDetailedStatus(NULL, &dwSize);
    if(STRSAFE_E_INSUFFICIENT_BUFFER != hr)
        return hr;

    LPBYTE pBuffer = new BYTE[dwSize];
    if(NULL == pBuffer)
        return E_OUTOFMEMORY;

    //
    // Get the connection information
    //
    hr = ConnMgrQueryDetailedStatus((CONNMGR_CONNECTION_DETAILED_STATUS*)pBuffer, &dwSize);
    if(S_OK == hr)
    {

        //
        // Enum each connection entry
        //
        CONNMGR_CONNECTION_DETAILED_STATUS* cmStatus  = (CONNMGR_CONNECTION_DETAILED_STATUS*)pBuffer;
        while(NULL != cmStatus)
        {
            // find the connected GPRS entry
            if((cmStatus->dwParams & (CONNMGRDETAILEDSTATUS_PARAM_TYPE | CONNMGRDETAILEDSTATUS_PARAM_DESCRIPTION | CONNMGRDETAILEDSTATUS_PARAM_CONNSTATUS)) &&
                CM_CONNTYPE_CELLULAR == cmStatus->dwType &&
                CONNMGR_STATUS_CONNECTED == cmStatus->dwConnectionStatus &&
                NULL != cmStatus->szDescription)       
            {
                // get the connected GPRS APN
                if(S_OK == GetAPNFromEntryName(cmStatus->szDescription, szAPN, 200))
                    MessageBox(NULL, szAPN, cmStatus->szDescription, MB_OK | MB_ICONINFORMATION);

            }

            // test the next one
            cmStatus = cmStatus->pNext;
        }
    }


    // clear the buffer
    delete pBuffer;


    return 0;
}

posted on 2009-02-09 17:09 Benjamin 閱讀(1804) 評論(3)  編輯 收藏 引用 所屬分類: PDA/PPC開發(fā)

評論

# re: 如何判斷GPRS的接入點  回復  更多評論   


Cannot open include file: 'Connmgr_status.h': No such file or directory

樓主,這個問題問題怎么解決啊!
2009-07-14 10:06 | beautymind

# re: 如何判斷GPRS的接入點  回復  更多評論   

用了樓主的方法,想判斷 CDMA 手機是用了 CTWAP 還是 CTNET 網(wǎng)絡,能得到網(wǎng)絡的描述名稱,但是當我進一步想拿到 APN 值時,返回的 XML 字符串是類似以下的內(nèi)容:
----------------
<wap-provisioningdoc>

<characteristic type="CM_GPRSEntries">
<characteristic-error type="ctwap">
<characteristic type="DevSpecificCellular">

<parm-query name="GPRSInfoAccessPointName"/>

</characteristic>

</characteristic-error>
</characteristic></wap-provisioningdoc>
-------------------
這是什么原因呢?
2010-04-03 15:45 | Water Lin

# re: 如何判斷GPRS的接入點  回復  更多評論   

GPRS和CDMA是兩種不同的網(wǎng)絡,而且CDMA的芯片是美國高通所擁有,所以不是這么判斷的。一般在C網(wǎng)下不用判斷的,都是CMWAP。
2010-04-04 08:00 | Benjamin
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99天天综合性| 欧美人妖在线观看| 久久久伊人欧美| 欧美专区一区二区三区| 久久av红桃一区二区小说| 香蕉视频成人在线观看| 久久福利资源站| 欧美福利一区| 亚洲最黄网站| 午夜一级久久| 久久婷婷国产综合国色天香| 欧美成人性生活| 国产精品国产三级国产普通话三级| 欧美一区在线视频| 亚洲高清一区二| 午夜精品美女久久久久av福利| 99国产精品久久久久老师| 亚洲欧洲精品一区二区三区不卡 | 麻豆成人精品| 亚洲一区二区高清视频| 欧美日韩成人一区二区三区| 在线观看不卡| 午夜精品福利一区二区三区av | 欧美另类亚洲| 国产精品丝袜91| 一本色道久久综合狠狠躁篇怎么玩 | 久久综合99re88久久爱| 亚洲视频一区| aa级大片欧美三级| 欧美日韩精品在线| 欧美在线观看视频一区二区三区 | 国产精品一卡二卡| 欧美国产日产韩国视频| 国产一级精品aaaaa看| 亚洲综合精品| 亚洲国产第一页| 久久国产毛片| 欧美成人免费网| 国产精品一区二区三区久久久| 久久精品人人做人人综合| 国产欧美日韩在线观看| 亚洲一区二区三区乱码aⅴ| 欧美 日韩 国产一区二区在线视频 | 狠色狠色综合久久| 亚洲影院色无极综合| 麻豆国产精品va在线观看不卡| 欧美日韩视频一区二区| 亚洲欧洲日本国产| 亚洲欧洲视频在线| 91久久久国产精品| 亚洲一区二区三区四区在线观看| 免费成人av在线看| 99精品欧美一区二区蜜桃免费| 久久精品国产亚洲a| 一本色道久久88综合亚洲精品ⅰ| 欧美一区二区三区免费观看视频 | 久久国产精品久久久久久电车| 欧美一区二区三区免费在线看| 男女视频一区二区| 久久成人羞羞网站| 免费不卡亚洲欧美| 99热在这里有精品免费| 亚洲精选在线| 欧美www在线| 欧美bbbxxxxx| 激情自拍一区| 久久久777| 最新日韩精品| 亚洲精品资源美女情侣酒店| 9i看片成人免费高清| 两个人的视频www国产精品| 国产亚洲精品久久久久动| 国产日韩欧美制服另类| 久久在线免费观看视频| 能在线观看的日韩av| 欧美在线地址| 午夜欧美视频| 免费一区视频| 欧美精品成人91久久久久久久| 久久亚洲欧美| 欧美日韩亚洲一区二区三区在线观看 | 欧美影院视频| 性做久久久久久| 久久久久91| 欧美黑人在线观看| 欧美 日韩 国产一区二区在线视频| 亚洲欧美影院| 欧美第十八页| 亚洲婷婷综合久久一本伊一区| 欧美一区二区日韩一区二区| 在线亚洲免费| 亚洲网站视频| 欧美中文字幕视频| 亚洲国产精品久久久久| 亚洲永久视频| 午夜精品电影| 午夜精品久久99蜜桃的功能介绍| 欧美一区二视频在线免费观看| 日韩网站在线观看| 国产精品系列在线| 欧美不卡视频一区| 久久婷婷久久一区二区三区| 欧美视频精品一区| 99热精品在线| 美女视频黄a大片欧美| 91久久精品网| 欧美高清影院| 欧美制服丝袜| 亚洲资源av| 国产视频欧美| 久久精品人人做人人综合| 久久综合综合久久综合| 在线观看欧美日韩| 你懂的国产精品| 欧美日韩国产123| 在线亚洲免费| 欧美激情成人在线| 国产精品xxxxx| 蜜臀99久久精品久久久久久软件| 亚洲视频在线观看免费| 国产一区二区三区在线播放免费观看| 欧美在线视频观看| 欧美护士18xxxxhd| 欧美影视一区| 国产一区二区三区在线观看免费| 一区二区免费看| 欧美日韩成人综合在线一区二区| 久久精品欧美日韩| 裸体女人亚洲精品一区| 亚洲区第一页| 欧美国产综合| 午夜精品久久久久| 欧美视频在线观看免费| 亚洲精品少妇网址| 国产欧美大片| 久热精品视频| 欧美四级剧情无删版影片| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美不卡三区| 亚洲欧洲在线一区| 欧美日本中文字幕| 亚洲精品免费电影| 模特精品裸拍一区| 中日韩美女免费视频网址在线观看 | 亚洲靠逼com| 在线观看国产日韩| 亚洲欧美另类中文字幕| 亚洲伊人一本大道中文字幕| 国产偷国产偷精品高清尤物| 久久九九精品| 美女爽到呻吟久久久久| 亚洲激情一区| 国产精品免费一区二区三区在线观看| 亚洲图片欧美日产| 亚洲国产美女精品久久久久∴| 久久一区国产| 亚洲视频一区二区| 欧美中文字幕视频| 亚洲国产欧美在线| 日韩午夜av在线| 黄色精品在线看| 在线播放豆国产99亚洲| 国产精品三上| 欧美色视频在线| 免费亚洲电影| 亚洲国产专区| 亚洲欧洲日本国产| 欧美在线视频免费播放| 国产精品少妇自拍| 国产精品欧美日韩久久| 欧美午夜不卡视频| 国产精品久久久一区麻豆最新章节| 久久国产婷婷国产香蕉| 久久99伊人| 欧美一区二区三区四区在线| 亚洲欧美资源在线| 一区二区三区精品视频| 亚洲美女少妇无套啪啪呻吟| 久久天堂精品| 亚洲一区二区三区四区在线观看| 国产农村妇女毛片精品久久莱园子 | 国产精品mm| 国产精品视频yy9099| 一区二区在线免费观看| 亚洲精品国产精品乱码不99按摩 | 国产精品多人| 国产美女精品视频| 国产精品久久久久9999| 国产精品亚洲激情| 精品福利av| 久久精品国产视频| 欧美大片免费久久精品三p| 亚洲日本成人| 久久伊人精品天天| 国产一区二区三区免费在线观看| 永久免费精品影视网站| 亚洲精品综合| 91久久国产综合久久蜜月精品 | 亚洲精品一区二区三区婷婷月| 国产精品自拍网站|