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

Benjamin

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

如何判斷GPRS的接入點

思路:用ConnMgrQueryDetailedStatus找到Dest GUID, 然后根據Dest GUID用DMProcessConfigXML函數透過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開發

評論

# 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 網絡,能得到網絡的描述名稱,但是當我進一步想拿到 APN 值時,返回的 XML 字符串是類似以下的內容:
----------------
<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是兩種不同的網絡,而且CDMA的芯片是美國高通所擁有,所以不是這么判斷的。一般在C網下不用判斷的,都是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国内精品久久| 亚洲人成网站色ww在线| 欧美电影在线播放| 亚洲激情欧美| 中文日韩在线| 欧美中文字幕在线观看| 女女同性女同一区二区三区91| 欧美jizz19性欧美| 国产精品网站在线| 亚洲欧洲日本mm| 亚洲在线视频| 免费不卡在线视频| 亚洲免费高清| 久久精品最新地址| 欧美黑人在线观看| 国内久久精品视频| 日韩一级精品视频在线观看| 欧美在线免费看| 亚洲国语精品自产拍在线观看| 亚洲视频免费看| 欧美xx视频| 国产午夜精品美女毛片视频| 亚洲久久一区| 久久人人爽爽爽人久久久| 日韩视频精品| 看片网站欧美日韩| 国产欧美一区二区精品婷婷| 亚洲美女电影在线| 久久精品视频网| 一本色道久久综合狠狠躁的推荐| 久久精品人人做人人综合| 欧美性做爰毛片| 蜜桃av久久久亚洲精品| 99v久久综合狠狠综合久久| 欧美一级黄色网| 欧美性理论片在线观看片免费| 黄网站色欧美视频| 午夜精品免费| 一本色道久久加勒比精品| 欧美a级片网| 伊人婷婷欧美激情| 欧美中文在线观看国产| 在线一区二区三区做爰视频网站| 美女脱光内衣内裤视频久久影院| 国产欧美va欧美va香蕉在| 宅男噜噜噜66一区二区66| 亚洲电影有码| 蜜月aⅴ免费一区二区三区| 狠狠干综合网| 久久影院午夜片一区| 宅男66日本亚洲欧美视频| 欧美成人精品一区| 久久久久久久性| 国内精品久久久久影院色| 欧美在线视频在线播放完整版免费观看 | 亚洲电影自拍| 久久偷看各类wc女厕嘘嘘偷窃| 国产日韩欧美一区二区三区在线观看 | 欧美在线www| 黑人极品videos精品欧美裸| 久久久久久久999精品视频| 午夜日韩视频| 精品1区2区| 欧美a级一区| 欧美成人69av| 一区二区三区黄色| 亚洲视频碰碰| 国户精品久久久久久久久久久不卡 | 麻豆国产精品va在线观看不卡| 久久久国产精品一区| 91久久精品一区二区三区| 亚洲另类在线视频| 国产精品一区久久久| 久久综合精品一区| 欧美成年人在线观看| 亚洲天堂免费在线观看视频| 午夜精品久久久久久久男人的天堂| 国产亚洲欧美一区| 亚洲第一二三四五区| 欧美四级在线观看| 久久精品国产亚洲精品| 久久亚洲春色中文字幕| 亚洲精品美女在线观看| 亚洲美女啪啪| 国产精品一区二区三区久久| 久久婷婷激情| 欧美日韩国产成人精品| 久久国产精品久久国产精品| 久久夜色精品亚洲噜噜国产mv| 99精品欧美一区二区三区综合在线| 99国产精品国产精品久久| 国产日韩欧美一区在线| 亚洲人在线视频| 国产亚洲免费的视频看| 亚洲人成人一区二区在线观看| 国产麻豆精品在线观看| 最新亚洲激情| 一色屋精品视频免费看| 亚洲午夜免费视频| 亚洲精品乱码久久久久久按摩观| 亚洲欧美日韩另类精品一区二区三区| 亚洲第一黄色网| 亚洲欧美另类中文字幕| 99re66热这里只有精品3直播| 亚洲欧美成人| 久久亚洲春色中文字幕| 午夜激情综合网| 欧美理论在线| 欧美成人综合网站| 国产一区二区三区四区在线观看 | 欧美在线你懂的| 亚洲一区二区在线| 欧美α欧美αv大片| 久久亚洲风情| 国产人久久人人人人爽| 一个人看的www久久| 亚洲美洲欧洲综合国产一区| 久久久久网址| 久久视频一区| 国产欧美精品一区二区三区介绍 | 亚洲欧美激情诱惑| 欧美日韩国产另类不卡| 91久久久久久| 日韩午夜激情av| 欧美国产综合| 欧美激情免费观看| 91久久精品一区二区别| 麻豆亚洲精品| 欧美黄色视屏| 亚洲激情一区二区| 免费观看在线综合| 亚洲国产国产亚洲一二三| 亚洲国产精品久久久| 久久综合久色欧美综合狠狠| 免费的成人av| 亚洲精品日日夜夜| 欧美久久久久中文字幕| 亚洲精品视频在线看| 亚洲素人一区二区| 国产精品自在在线| 欧美一级久久久| 欧美不卡视频| 蜜桃av噜噜一区二区三区| 国产精品久久一级| 亚洲一区二区三区乱码aⅴ| 亚洲欧美日韩成人| 国产日韩免费| 蜜桃精品久久久久久久免费影院| 欧美激情精品久久久久久变态| 亚洲日本va午夜在线影院| 欧美日韩第一页| 午夜精品视频在线观看一区二区 | 亚洲日本欧美| 欧美日韩免费高清一区色橹橹| 亚洲视频精选在线| 久久综合九色综合久99| 亚洲免费久久| 国产精品自拍一区| 免费成人av在线看| 中文有码久久| 欧美国产日韩一区二区三区| 一区二区三区久久网| 国产一级一区二区| 欧美精品一区二区高清在线观看| 亚洲午夜一区| 欧美成人精品一区二区| 午夜激情亚洲| 亚洲美女少妇无套啪啪呻吟| 国产精品美女www爽爽爽视频| 久久亚洲精选| 亚洲欧美日韩综合国产aⅴ| 亚洲电影成人| 久久精品视频在线免费观看| 99re热精品| 狠狠色狠狠色综合人人| 欧美婷婷在线| 欧美www视频| 久久久精彩视频| 亚洲一区二区精品| 日韩午夜精品视频| 欧美电影免费观看高清完整版| 羞羞漫画18久久大片| 一二三区精品| 亚洲黄色成人久久久| 国内外成人在线| 国产欧美日本在线| 欧美性大战久久久久久久蜜臀 | 欧美一区二区三区在线免费观看 | 亚洲视频综合在线| 最新69国产成人精品视频免费| 久久亚洲图片| 久久精品人人爽| 亚洲男人第一av网站| 一区二区三区国产精华| 亚洲人成在线观看网站高清| 尤妮丝一区二区裸体视频| 国产日本欧美一区二区三区在线| 欧美日韩精品一二三区|