关于DLL内部函数的参数在调用时动态修改的问题
清晨曦月 博客专家认证 2009-05-28 11:18:02 是酱紫的,写了一个DLL用来HOOK一个API函数,我需要修改它的返回值,但是修改时要根据调用程序的设定来修改。
于是,在DLL中定义了一个全局变量:
double Num;
然后,搞了一个函数来修改这个数值:
extern "C" _declspec(dllexport) void __stdcall SetNum(double NewNum)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
Num=NewNum;
}
好嘛,已测试,发现只要我的程序调用SetNum,就崩溃了,还无法调试……告诉我无法调试一个已终止的进程,我晕~~~~~~~~
后来加了一个这个:
CRITICAL_SECTION _cs;
先初始化,然后在SetNum和mYFunction中对Num读写的语句前后分别加了这:
EnterCriticalSection(&_cs);
//和Num有关的代码
LeaveCriticalSection(&_cs);
测试发现还是同样的错误嘛…而且在SetNum中调用AfxMessageBox的时候,Num=NewNum;前后都正常弹出啊………看来是我认识不够。。。。。。。。
请高人指点二三……问题出在什么地方,我得咋整才能实现这个数据的“动态修改”呢?