关于利用DLL 进行进程间通信的有关问题

关于利用DLL 进行进程间通信的问题.
今天刚好想试试利用DLL来实现进程间的通信,说明了就是在DLL里面设置一个共享数据段,但却得不到想要的结果,想知道在哪一步出错了,请热心的同胞们指点.谢谢.

我的DLL是利用MFC向导生成的.头文件有如下定义:

#ifndef   _DLLSHARED
#define   _DLLCOM_   _declspec   (dllexport)
#else
#define   _DLLCOM_   extern   "C "   _declspec   (dllexport)
#endif

#pragma   data_seg( "Shared ")
char   m_str[256]   =   _T( " ");
volatile   bool   bInCriticalSection   =   FALSE;
#pragma   data_seg()

#pragma   comment(linker, "/SECTION:Shared,RWS ")
CCriticalSection   cs;

_DLLCOM_   LPSTR   GetValueString();
_DLLCOM_   void   SetValueString(LPCTSTR   str);

然后在CPP里面有两个函数的实现:

_DLLCOM_   LPSTR   GetValueString()
{
while(bInCriticalSection)
Sleep(10);

return   m_str;
}


_DLLCOM_   void   SetValueString(LPCTSTR   str)
{
while(bInCriticalSection)
Sleep(10);

cs.Lock();
bInCriticalSection   =   TRUE;
strcpy(m_str,str);
bInCriticalSection   =   FALSE;
cs.Unlock();
}


然后生成两个对话框工程,两个工程都包含了该DLL的头文件,还有在DEBUG目录下,也有DLL和LIB文件,通过调试,其中一个进程利用SetValueString已经成功设置m_str变量,但另一个进程利用GetValueString函数却得到空的字符串,不知道为什么???请高手指点一下,在两个工程的DEBUG目录下都有DLL和LIB文件,难道这用的不是同一个DLL文件吗?如果不是,应该怎么样做?


------解决方案--------------------
...
volatile bool bInCriticalSection = TRUE; // 改成TRUE了
#pragma data_seg()

如果这样呢?