我做了一个全局钩子DLL, 其中有共享数据段,
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;
#pragma data_seg()#pragma comment(linker,"/SECTION:aaaaa,RWS") // tell linker: make it shared钩子中会改变pressed的值.另写一个测试程序:
也加入:
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;
#pragma data_seg()#pragma comment(linker,"/SECTION:aaaaa,RWS") // tell linker: make it shared然后加载上面的DLL, 然后安装钩子.然后有一个线程执行:
while(1)
{
str.Format("dkkdkdk: %d", pressed);
OutputDebugString(str);
Sleep(1000);
}通过Debugviw可以看到: DLL中将pressed的值设为1, 可EXE程序取得的pressed值还是0.why?
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;
#pragma data_seg()#pragma comment(linker,"/SECTION:aaaaa,RWS") // tell linker: make it shared钩子中会改变pressed的值.另写一个测试程序:
也加入:
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;
#pragma data_seg()#pragma comment(linker,"/SECTION:aaaaa,RWS") // tell linker: make it shared然后加载上面的DLL, 然后安装钩子.然后有一个线程执行:
while(1)
{
str.Format("dkkdkdk: %d", pressed);
OutputDebugString(str);
Sleep(1000);
}通过Debugviw可以看到: DLL中将pressed的值设为1, 可EXE程序取得的pressed值还是0.why?
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;
#pragma data_seg()