1.1、简介

            平台调用服务 P/Invoke 是 CLR 的一部分,负责确保托管代码可以调用从非托管程序集中导出的各种函数,原因很简单,托管类型参数和非托管类型参数是不一致的,比如:托管的引用类型是带有附加信息的,二非托管类型是不可能有的。

    
2、P/Invoke 的崩溃

        
2.1、调用协定引发的崩溃。

            很多时候调用协定不一致容易造成程序的崩溃,这种问题需要通过【调试器】检查。

        
2.2、委托异步引发的崩溃

            【托管代码】到【非托管代码】的切换过程中,对象的固定是有 P/Invoke 层全权负责的,但是这个固定的范围这个同步的 Request-Response 周期,如果超过请求相应周期,那就容易出现各种问题,比如:Example_16_1_4。

        
2.3、非托管内存泄漏

            非托管内存泄露,这里就不多说,我们举例说明,直接看调试代码。(
这个方案没有完全解决,有些命令没有执行结果。

三、源码调试

    废话不多说,这一节是具体的调试过程,又可以说是眼见为实的过程,在开始之前,我还是要啰嗦两句,这一节分为两个部分,第一部分是测试的源码部分,没有代码,当然就谈不上测试了,调试必须有载体。第二部分就是根据具体的代码来证实我们学到的知识,是具体的眼见为实。

    
1、项目源码

        
1.1、Example_16_1_1