引发异常0xc0000005(异常0x8007007e)
举个简单的例子。现在有了下面的COM指针p1和p2,还有两个COM方法BOOL TT1(COM指针1,COM指针2)和Booltt2 (COM指针2)。TT1方法,
要实现COM指针1到COM指针2的转换,像其他操作一样调用TT2,需要一个COM指针2类型的指针。现在,你调用TT1,传递p1,p2(p1有效,p2为空),TT1方法,返回TRUE。
也就是说,转换成功,现在p2是有效值。再次调用TT2,返回TRUE。这就像打电话成功。但如果我现在用的系统不是原来的开发系统(版本),它的内核COM库发生了变化(方法的实现),
当我调用TT1方法的时候,p2返回了一个有效值,但是对于这个版本的系统,p2转换很可能是不成功的(要么是一个新方法被替换,要么是这个版本不推荐使用这个方法,要么是原方法被另一个名字替换,
该方法的现有版本已更新。),很有可能是NULL。当它的值为NULL时,系统捕捉这个异常并自动调用另一个兼容的方法。所以抛出了这个异常。但是因为抓到了,
程序的执行仍然达到了它的目标。
本文来自网络,不代表海诗网立场,转载请注明出处:https://www.hallse.com/n/139507.html