问题:DLL中的共享数据

时间:2015-02-25 06:43:45

标签: c++ windows multithreading visual-c++ dll

有一个在Windows服务和测试应用程序之间共享的DLL。该DLL由Windows服务和测试应用程序加载。

服务将创建一个线程并等待特定的消息。该线程ID存储在DLL的共享内存中,如下所示。

#pragma data_seg(".shared")
DWORD dwServiceThreadID = 0;
#pragma data_seg()

#pragma comment(linker, "/section:.shared,RWS")

我正在设置DLL中公开的方法中服务的线程ID为...

// Exposed method
void __stdcall HFDLL_setServiceThreadID(DWORD dwThreadID)
{
    dwServiceThreadID = dwThreadID;
}

我在dll中使用此dwServiceThreadID在测试应用程序中发生偶数时发布消息。

if (dwServiceThreadID)
{
    PostThreadMessage(dwServiceThreadID, WM_KEY_PRESS, wParam, lParam);
}

问题:当我尝试使用公开的方法HFDLL_setServiceThreadID设置服务线程ID时,它正确显示ID。当我通过附加测试应用程序尝试调试dll时,变量dwServiceThreadID显示为0。

没有弄到我犯了什么错误。任何帮助表示赞赏。

0 个答案:

没有答案