引發(fā)異常0xc0000005(異常0x8007007e)
舉個簡單的例子?,F(xiàn)在有了下面的COM指針p1和p2,還有兩個COM方法BOOL TT1(COM指針1,COM指針2)和Booltt2 (COM指針2)。TT1方法,
要實(shí)現(xiàn)COM指針1到COM指針2的轉(zhuǎn)換,像其他操作一樣調(diào)用TT2,需要一個COM指針2類型的指針?,F(xiàn)在,你調(diào)用TT1,傳遞p1,p2(p1有效,p2為空),TT1方法,返回TRUE。
也就是說,轉(zhuǎn)換成功,現(xiàn)在p2是有效值。再次調(diào)用TT2,返回TRUE。這就像打電話成功。但如果我現(xiàn)在用的系統(tǒng)不是原來的開發(fā)系統(tǒng)(版本),它的內(nèi)核COM庫發(fā)生了變化(方法的實(shí)現(xiàn)),
當(dāng)我調(diào)用TT1方法的時候,p2返回了一個有效值,但是對于這個版本的系統(tǒng),p2轉(zhuǎn)換很可能是不成功的(要么是一個新方法被替換,要么是這個版本不推薦使用這個方法,要么是原方法被另一個名字替換,
該方法的現(xiàn)有版本已更新。),很有可能是NULL。當(dāng)它的值為NULL時,系統(tǒng)捕捉這個異常并自動調(diào)用另一個兼容的方法。所以拋出了這個異常。但是因?yàn)樽サ搅耍?
程序的執(zhí)行仍然達(dá)到了它的目標(biāo)。
本文來自網(wǎng)絡(luò),不代表海詩網(wǎng)立場,轉(zhuǎn)載請注明出處:http://x91880.com/n/139507.html