dll 프로세스 통신 실현

2358 단어
3.6.2    DLL     
       ,  Win32 DLL,    DLL             ,      ,                      。              。
   Win32 DLL              ,    #pragma
data_seg              ,                  。  ,           ,                  。        
    :
(1)  DEF   SECTIONS     ,    :
SECTIONS
         READ WRITE SHARED
(2)#pragma comment(linker,"/SECTION:     ,RWS")
                   :
#pragma data_seg("MyShared")
UINT m_glnData=0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:MyShared,RWS")
        。        ,                  .bss 。                ,         ,            .bss 。
         MyShared,          , MYDATA、.MYSC ,      PE          ,         。
         ,             DLL  。        DLL       ,            。
3.6.3    DLL     
            ,     DLL        。         DLL      DllObj.h。       :
// DllObj.h:   
//
#ifndef _DLLOBJ_H_INCLUDED
#define _DLLOBJ_H_INCLUDED
#include 
#ifdef _cplusplus
#define _DLLCOM_ extern "C" _declspec (dllexport)
#else
#define _DLLCOM_ _declspec (dllexport)
#endif
_DLLCOM_LPSTR GetValueString();
_DLLCOM_void SetValueString(LPCSTR str);
#endif
  SetValueString() GetValueString()                         。_DLLCOM_
    DLL      。    ,SetValueString() GetValueString()        DLL           。  ,                m_strString        DLL           。
              DLL  。  MFCAppWizard(dll)    dllcom
  (        ),             dllcom.cpp   ,  VC++          ,     dllcom.dll dllcom.lib  。    DLL         :
#pragma data_seg("MyShared")
char m_strString[256]=TEXT("");
volatile bool bInCriticalSection=FALSE;
#pragma data_seg()
#pragma comment(linker,"/SECTION:MyShared,RWS")
CCriticalSection cs;
//          
_DLLCOM_ LPSTR GetValueString()
{
   while(bInCriticalSection) //   
       Sleep(1);
    returnm_strString;
}
//             
_DLLCOM_  void SetValueString(LPCSTR str)
{
   while(bInCriticalSection) //   
       Sleep(1);
   cs.Lock();
   bInCriticalSection = TRUE;
   strcpy(m_strString,str);
   bInCriticalSection = FALSE;
   cs.Unlock();
}
  bInCriticalSection             。
              DLL   ,               。          ,dlluser1 dlluser2,              DllObj.h    dllcom.lib    , 
#include "DllObj.h"
#pragma comment(lib,"dllcom.lib")
  , MFCVC++          ,      SetValueString() GetValue-String()       。

좋은 웹페이지 즐겨찾기