读书人

共享数据段中的数据在其余程序中可以直

发布时间: 2012-10-15 09:45:24 作者: rapoo

共享数据段中的数据在其他程序中可以直接显示吗?
我做了一个全局钩子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?

[解决办法]
可以的,否则怎么叫share数据段?
[解决办法]
可以的,但是请注意共享段里面的变量要初始化才有效
#pragma data_seg("aaaaa")
HHOOK hHook=NULL;
HINSTANCE hins;
CRITICAL_SECTION cs_disk;
int pressed;


#pragma data_seg()

读书人网 >VC/MFC

热点推荐