有一个在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。
没有弄到我犯了什么错误。任何帮助表示赞赏。