我今天修改了同事留下的updateboot.exe的**, 改進藍芽讀寫的模組. 這個地方我們用到了rapi, 看一下他們在程式中初始化rapi的做法
hresult hrapiresult;
hrapiresult = cerapiinit();
if(hrapiresult != s_ok)
看起來是平淡無奇, 實際上單步一下就可以發現執行到cerapiinit()時, 程式就block在這裡了,死活走不下去, 並沒有達到 if(hrapiresult != s_ok)的預期目的. 我查了一下cerapiinit()的說明:
a call tocerapiinitdoes not return until the connection is made, an error occurs, or another thread callscerapiuninit.
也就是說像我現在並沒有把板子和pc相連並啟動active sync時, 這個cerapiinit()是肯定賴著不走了, 程式會死在這裡. (鄙視一下誰寫的**,這個坑好大啊) 因此想到了重新創立個等待程序呼叫cerapiuninit來乾掉它. 不過這樣做顯然不厚道, 創立程序需要占用更多的記憶體. 所以用了上句說明的下半段:
thecerapiinitexfunction does not block the calling thread. instead, it uses an event to signal when initialization is complete.
建立個事件, 用waitforsingleobject來等他, 超時就byebye了. 貢獻自己寫的如下**, 以後rapi init可以參考
bool rapiinitialzation()
else
}else}
直接初始化和複製初始化
關於這個問題,國內外都有許多爭論,但我至今未找到滿意的答案,至於為為什麼,這就是今天要說明的。可能大家都有看過c primer,我看的是第四版,中文版,英文水平不怎麼樣。其中第13章,描述說,複製建構函式可用於 1.根據另乙個同型別的物件顯式或隱式初始化乙個物件 2.複製乙個物件,將它作為引數傳遞給...
靜態初始化和例項初始化
父類單獨的效果 當父類單獨執行時,靜態初始化塊優先執行,然後是例項初始化塊,最後才是構造器 子類單獨效果 首先執行父類的靜態初始化塊和子類的初始化塊 優先執行靜態 然後執行父類的例項初始化塊和構造器,最後執行子類的例項初始化塊和構造器 父類子類效果1 父在前子在後 先將父類的物件例項出來後,進行子類...
直接初始化和拷貝初始化
定義 示例 string dots 10,直接初始化 string s dots 直接初始化 string s2 dots 拷貝初始化 string null book 9 999 99999 9 拷貝初始化 string nines string 100,9 拷貝初始化注 直接初始化實際上是要求編...