• 编程中我犯过的错误一


    1.不要不断的用OpenFileMappingA打开为0来判断是否有内存映射块创建完毕.

    某代码 是涉及到注入到第三方进程的DLL和EXE进行通讯的

    我用的是内存映射 DLL中创建内存映射 写入数据 EXE中为了等待DLL创建内存映射完毕 就开启一个线程 然后不断的去OpenFileMappingA打开,如果返回值为0,表示DLL还没有创建内存映射块,则循环打开,直到打开成功返回非0值为止 ,结果,结果有一定几率这个内存共享映射块出现传递数据失败,因为EXE我是开启线程的,所以一直没找出来原因,今天调试才发现,在线程里不断去OpenFileMappingA一个不存在的内存映射块,造成了线程崩掉了

    所以千万不要用循环OpenFileMappingA以返回值的方式判断内存映射块是否建立 换一种方式后数据传递非常正常了

    2.异常回调的程序流程中不要用[如果 如果真] ,要用判断.免得一次异常流程在异常回调中多次处理异常。另:异常回调中不要反汇编,最好创建一个线程,在线程中调用反汇编引擎 。

  • 相关阅读:
    达梦数据库还原
    达梦数据库备份-Quartz定时任务备份
    达梦数据库备份-手动备份
    Hadoop集群分布式安装
    echarts实现group关系图案例
    U盘安装windows系统
    GC垃圾回收机制
    form表单提交方式实现浏览器导出Excel
    数据分析-信用卡反欺诈模型
    机器学习-SVM
  • 原文地址:https://www.cnblogs.com/qq32175822/p/4340815.html
Copyright © 2020-2023  润新知