编程中我犯过的错误一

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

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

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

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

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

原文地址:https://www.cnblogs.com/qq32175822/p/4340815.html