• <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>

            玩心未泯

            卡爾斯希普拉斯

            C++博客 首頁 新隨筆 聯系 聚合 管理
              19 Posts :: 0 Stories :: 98 Comments :: 0 Trackbacks
            后來發現在Mobile5上,注冊表結構發生了變化
            HKLM\Software\Microsoft\ConnMgr\Providers\{7C4B7A38-5FF7-4bc1-80F6-5DA7870BB1AA}\Connections
            變成了
            HKLM\Comm\ConnMgr\Providers\{7C4B7A38-5FF7-4bc1-80F6-5DA7870BB1AA}\Connections
            而且連接的鍵值中多了一個GUID,目前還不知道如何生成或者獲取的。
            re: C++ 類成員的CALLBACK SuperPlayeR 2007-08-21 09:51
            其實主要是使用了.*或者是-〉*操作符的表達式。
            re: 線程互斥執行之假死鎖現象 SuperPlayeR 2007-08-13 15:23
            最后的總結第二點,應該說是盡量減少互斥鎖保護范圍內代碼的執行時間。減少對慢速IO設備的訪問其實目的只是縮短時間而已。
            re: 對研發部的思考 SuperPlayeR 2007-08-13 11:24
            @SmartPtr
            不少優秀的IT企業在浦東不假,不過我目前已經搬家到浦西長橋一村那個偏僻的地方了,這也是我目前很頭疼的原因之一。還是想要住回浦東去啊,什么都方便。
            一個朋友研究了在smartphone上建立GPRS撥號連接的情況,貼出一些代碼供需要的朋友參考:
            http://cpp.sourceforge.net/?show=39205

            怕這個鏈接以后會失效,我還是先copy一份過來。

            #include "stdafx.h"

            #include <wchar.h>

            #include <tapi.h>
            #include <tsp.h>

            #include <ras.h>
            #include <raserror.h>

            #include <vector>

            DWORD FindCellLine()
            {
            LONG lRet = 0;
            DWORD dwDeviceNum = 0;
            DWORD dwDeviceID = -1, dwTapiVersion = TAPI_CURRENT_VERSION;

            HLINEAPP hLineApp = NULL;

            LINEINITIALIZEEXPARAMS initParams = {0};
            initParams.dwTotalSize = sizeof(initParams);
            initParams.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT;

            std::vector<char> buffer(1024, '\0');
            LPLINEDEVCAPS devcaps =(LINEDEVCAPS*) &buffer[0];

            devcaps->dwTotalSize = buffer.size();

            lRet = lineInitializeEx(&hLineApp, GetModuleHandle(NULL), NULL,
            L"GPRS Device Finder", &dwDeviceNum, &dwTapiVersion, &initParams);

            if (lRet != 0)
            return -1;

            for(DWORD dwDeviceIndex = 0; dwDeviceIndex != dwDeviceNum; dwDeviceIndex++)
            {
            lineGetDevCaps(hLineApp, dwDeviceIndex, dwTapiVersion, 0, devcaps);

            if (devcaps->dwNeededSize > devcaps->dwTotalSize)
            {
            buffer.resize(devcaps->dwNeededSize);
            devcaps =(LINEDEVCAPS*) &buffer[0];
            devcaps->dwTotalSize = buffer.size();

            dwDeviceIndex--;
            continue;
            }

            if (wcscmp((LPCTSTR) &buffer[devcaps->dwLineNameOffset],
            CELLTSP_LINENAME_STRING) == 0)
            {
            dwDeviceID = dwDeviceIndex;
            break;
            }
            }

            lineShutdown(hLineApp);

            return dwDeviceID;
            }

            BOOL SetupGprsRasEntry(LPWSTR szEntryName, LPCWSTR szAccessPointName)
            {
            DWORD dwLineID = 0;
            std::vector<char> buffer(sizeof(VARSTRING) + sizeof(CELLDEVCONFIG), '\0');

            LPVARSTRING varbuffer =(LPVARSTRING) &buffer[0];
            varbuffer->dwTotalSize = buffer.size();

            LPCELLDEVCONFIG cellcfg = NULL;

            {//查找Cell Line的設備ID
            if ((dwLineID = FindCellLine()) == -1)
            return FALSE;
            }

            {//獲得默認數據配置
            if (lineGetDevConfig(dwLineID, varbuffer, L"comm/datamodem") != 0)
            return FALSE;

            cellcfg =(LPCELLDEVCONFIG) &buffer[varbuffer->dwStringOffset];
            }

            {//開始配置GPRS數據
            cellcfg->bGPRSConnectionInfoValid = TRUE;

            memset(&cellcfg->cgciGPRSConnectionInfo, 0x00,
            sizeof(cellcfg->cgciGPRSConnectionInfo));

            wcscpy(cellcfg->cgciGPRSConnectionInfo.wszAccessPointName, szAccessPointName);

            cellcfg->cgciGPRSConnectionInfo.dwProtocolType = CELLDEVCONFIG_GPRSPROTOCOL_IP;
            cellcfg->cgciGPRSConnectionInfo.dwL2ProtocolType = CELLDEVCONFIG_GPRSL2PROTOCOL_PPP;
            cellcfg->cgciGPRSConnectionInfo.dwDataCompression = CELLDEVCONFIG_GPRSCOMPRESSION_OFF;
            cellcfg->cgciGPRSConnectionInfo.dwHeaderCompression = CELLDEVCONFIG_GPRSCOMPRESSION_OFF;
            }

            {//安裝GPRS撥號項
            RASENTRY rsaentry = {0};

            rsaentry.dwSize = sizeof(rsaentry);
            rsaentry.dwfOptions = RASEO_ProhibitEAP|RASEO_RemoteDefaultGateway;
            rsaentry.dwfNetProtocols = RASNP_Ip;
            rsaentry.dwFramingProtocol = RASFP_Ppp;

            wcscpy(rsaentry.szDeviceName, CELLTSP_LINENAME_STRING);
            wcscpy(rsaentry.szDeviceType, RASDT_Modem);
            wcscpy(rsaentry.szLocalPhoneNumber, L"~GPRS!");

            if (RasSetEntryProperties(NULL, szEntryName, &rsaentry, sizeof(rsaentry),
            (LPBYTE) cellcfg, sizeof(*cellcfg)) != 0)
            return FALSE;
            }

            return TRUE;
            }

            re: 探索Heap Corruption SuperPlayeR 2007-08-02 19:52
            @學習者
            呵呵~~這個錯誤就是內存溢出了。試想在Release版本下沒有了這些信息,存放在內存中的都是有用的數據,一個10Byte數據可能是你的一個數組,其后跟著另外一個數據,而你寫入超過10Byte的數據不就把后面的數據給覆蓋掉了么?
            re: 向Pane、Splitter前進 SuperPlayeR 2007-08-02 19:45
            不錯~用的是自己開發的界面庫吧。
            唉,InfoSys~~~~~
            re: 幾種peer review的比較 SuperPlayeR 2007-08-02 15:18
            這個有意思多了。
            re: Peer Review 該如何翻譯 SuperPlayeR 2007-08-02 15:16
            我的意思是放著大把的好東西不研究,咬文嚼字起來了有點過了。
            re: Peer Review 該如何翻譯 SuperPlayeR 2007-08-02 10:56
            有點過了~
            一個人、大半年
            有多高的生產力?
            貌似從發文到現在又有半年時光了~
            re: 用c++,寫小型病毒 SuperPlayeR 2007-08-02 09:57
            這只能算是惡作劇。
            re: WinCE下驅動開發入門記錄(三) SuperPlayeR 2007-08-02 09:37
            昨晚上睡覺之前順手把一本買了很久卻一直沒看的書拿起來翻了翻,linux設備驅動程序,看了看關于usb驅動的章節,發現當初如果剛開始研究的時候就看看這個,可能會少走不少彎路,至少什么是Configuration,什么是Interface,什么是EndPoint它都介紹清楚了~:P
            今天如果有時間,我繼續寫(四),介紹一下。
            re: 關于GOOF的bug問題 SuperPlayeR 2007-07-17 11:29
            原來博主是搞游戲開發的。GOOF我沒讀過,不過第一個bug的確不是bug,可能博主自己理解錯誤了。其他的幾個光看博主貼出來的片斷也看不出個所以然來。
            re: 學習WinCE下的驅動開發 SuperPlayeR 2007-07-16 15:19
            hoho~難得付前輩還來我blog上踩個腳印,蓬蓽生輝啊~就是不知道是不是真的。
            不理解你也不行~總的找個法子寬慰自己才能繼續安心學習啊,不然老在那里郁悶、抱怨,還是進步不了啊~老前輩有空的話還是給我指點指點,雖然公司現在把驅動外包出去給別的公司作,而我自己的項目又忙得一塌糊涂,但是我還是對驅動開發很感興趣的。
            re: 中國職員的九種劣根性 SuperPlayeR 2007-07-13 11:34
            照下自己確實有不少這樣的毛病,受教了,以后要多多自省。
            re: VS9中C++少得可憐的更新 SuperPlayeR 2007-07-13 11:30
            路是自己走的嘛~~博主也不必擔心以后的學習者不知道指針是什么了,因為編程語言畢竟還只是一種工具,他不知道指針是什么,只要他的程序能夠很好的達到目的就行了。另一方面我們也可以認為他們不知道指針是什么的學的就不再是C++了~:P或許不久的將來,微軟就會給自己的“C++”定義新的名字了,這又有何不可呢?我們不能因為微軟的產品中用到“C++”幾個關鍵字就覺得它就應該局限在標準C++的約束之下啊~走我們自己的路就是了,修行靠個人~
            re: 用live writer發布c++博客 SuperPlayeR 2007-07-12 15:02
            我也剛剛開始用live writer,好像不能夠以摘要形式發布~
            學習學習~~感謝分享~
            re: 如何判斷一個COM對象是否可用 SuperPlayeR 2007-07-09 09:53
            我個人理解萬連文的意思就是說,針對你講述的這種情況,實際是因為com組件沒有被注冊造成了,而顯然使用COM技術的規范性操作當然是先注冊這個組件再使用。而博主您的想法也是通過讀取注冊表看該組件是否注冊了,其實也是一種不規范使用。
            不講效率的話,memset(dest, 0, nDiff);也可以

            恕我直言,我個人認為在這樣的小地方求效率的提高,不如把代碼寫的更容易讓人看懂。《Unix編程藝術》中似乎有對于這種“優化”做過探討,我比較贊成書中作者的觀點。
            re: 學習Hacking Wince SuperPlayeR 2007-07-06 14:01
            這次的最大收獲是入門了匯編,感覺又增加了不少新的見識。
            貌似第一個排序類 BubbleSorter中的
            if(list[j+1] < list[j])
            {
            bIsDone = false;

            int tmp = list[j+1];
            list[j+1] = list[j];
            list[j] = tmp;
            }
            其中int tmp應該是T tmp吧?
            后面的用到交換的好像都有這個問題。
            哦,原來作者在文章結尾的時候說明了,呵呵~~~怪我太著急還沒看完就評論了。哎~下次要改掉這個壞習慣。
            #ifdef _DEBUG
            #define new DEBUG_NEW
            #undef THIS_FILE
            static char THIS_FILE[] = __FILE__;
            #endif
            這個我文中也提到過,一般vc自動幫你生成的代碼中都有這幾行。確實對定位內存泄露很有幫助,不過有時候我們經常會用到一些第三方的類庫,有的類庫中高人們喜歡自己寫內存分配管理的,這個就不一定靈了。我也是因為項目中有用到這樣的類庫才用其他方法試了半天,最后才發現原來還是自己的項目中的一個老毛病潛伏著~
            其實不是我做夢在工作,而是被一些問題弄怕了~特別是有些問題是項目組成員弄出來的,而他自己又沒法定位錯誤的時候,我就難受了~:)
            大人是搬家了吧,一下子貼了這么多文章上來了。呵呵~
            受教了~~
            re: do...while(0)的妙用 SuperPlayeR 2007-07-05 10:27
            第二種用法我是從Linux內核分析中看到的,博主說了MFC中也有,才恍然大悟。唉~~自己也用了這么久VC了,還沒真地去好好讀過這些源碼,慚愧慚愧~~
            re: 你有接受新事物的能力嗎 SuperPlayeR 2007-07-01 02:43
            hehe,我只是就這個事情說明一下不要過于肯定自己的觀點,應該時常有一種懷疑的態度來否定既有的,開拓未有的。:)
            re: 一道微軟的Mini-Test筆試題(二) SuperPlayeR 2007-06-29 17:56
            這個題目我有個思路,不過現在下班了,思路還沒成熟。嘿嘿~~~晚點再奉上
            re: 我的項目管理經歷 SuperPlayeR 2007-06-29 14:30
            受教了~

            re: 一道微軟的Mini-Test筆試題(一) SuperPlayeR 2007-06-29 14:11
            本來看到嘩嘩一長串代碼就準備跳過的,看到1樓的評論說寫的不錯,又回頭認真讀了一遍,確實不虛此行,受教了~//bow //thanks
            re: 指針和引用的區別 SuperPlayeR 2007-06-29 13:52
            寫文章的“廢話”似乎太多了,又不用騙稿費。
            呵呵,也許是個人風格吧~~不過看了開頭幾句"廢話",就不想再看了~
            恩,看看再說。沒搞過ATL+WTL,先學習學習。
            不過初看代碼發現里面有些地方沒注意哦~最好是把編譯中的一些警告看看,該改掉的就改掉。比如ADate::GetLunationInfo中就少了個return TRUE;
            re: 面向對象分析方法與算法 SuperPlayeR 2007-06-28 09:41
            建議閱讀一下《Unix編程藝術》
            re: 對研發部的思考 SuperPlayeR 2007-06-27 09:21
            兵強強一個,將熊熊一窩

            說的好啊,我確實很認同這一點,而且對自身的修養也還覺得很不滿意,還在探索如何成為一個成功團隊的leader~:)
            re: 對研發部的思考 SuperPlayeR 2007-06-26 16:10
            寫出來確實舒服多了,鈔票不會是選擇公司的第一因素,至少對我來說不是。大家都是年輕人,可能都有創業的沖動和理想,然而卻不是人人都有機會去當老板來創業的。所以,當你選擇一個好的公司,能夠為你提供一個發展空間,你實現自我價值的同時,也是幫助公司的成長與進步,這才是最理想的。
            不過話還是那么句古話,鈔票不是第一的,卻是很重要的。公司給你開出的價碼也是對你價值的承認。我相信如果你是一個好員工,一個好公司不會在這方面吝嗇。
            re: 你也許不知道的#define用法 SuperPlayeR 2007-04-24 17:14
            是啊,但是我一直沒注意到過。那次看到了,才想搞清楚它是啥意思,幸虧最后還是搞清楚了,就寫篇隨筆讓和我一樣不知道的兄弟們認識認識咯。
            狠狠色噜噜色狠狠狠综合久久| 91久久精品国产成人久久| 国产一区二区久久久| 精品多毛少妇人妻AV免费久久| 久久久久久精品成人免费图片| 久久亚洲国产成人精品性色| 久久99精品国产麻豆宅宅| 久久香蕉国产线看观看猫咪?v| 精品一二三区久久aaa片| 狠狠色丁香久久综合五月| 亚洲精品久久久www| 77777亚洲午夜久久多喷| 久久久久国产精品人妻| 婷婷综合久久狠狠色99h| 久久久久国产精品人妻| 久久99精品国产麻豆婷婷| 久久综合狠狠综合久久| 性做久久久久久久久久久| 久久亚洲私人国产精品| 久久最新免费视频| 久久福利青草精品资源站免费 | 91精品国产综合久久久久久| 久久综合五月丁香久久激情| 久久精品蜜芽亚洲国产AV| 97香蕉久久夜色精品国产| 久久激情五月丁香伊人| 亚洲伊人久久大香线蕉苏妲己| 色婷婷综合久久久久中文| 久久久久亚洲AV成人网人人网站| 久久久久九国产精品| 岛国搬运www久久| 大蕉久久伊人中文字幕| 1000部精品久久久久久久久| 狠狠精品久久久无码中文字幕| 久久久久人妻一区精品| 伊人热人久久中文字幕| 国产精品久久久久久| 九九99精品久久久久久| 久久成人精品视频| 国产综合免费精品久久久| 99久久精品九九亚洲精品|