SDC C-Project CF Review 프로그램
ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
@@ -15,6 +15,9 @@
CDitGlassRawServer::~CDitGlassRawServer(void)
{
   delete m_pGlassRawData;
   delete m_pGlassRawInfo;
   if (m_hMapBasicInfo!=NULL)
   {
      ::UnmapViewOfFile(m_hMapBasicInfo);
@@ -41,7 +44,8 @@
      || sizeof(_grmBlockData) != m_pGlassRawInfo->m_nSizeOfBlockData
      || sizeof(_grmCellData) != m_pGlassRawInfo->m_nSizeOfCellData
      || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfDefectData
      || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData)
      || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData
      || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfRawMergeData)
   {
      return FALSE;
   }
@@ -51,7 +55,8 @@
   m_pGlassRawInfo->m_nCellMaxDataNum = nCellNum;
   m_pGlassRawInfo->m_nDefectMaxDataNum = nDefectNum;
   m_pGlassRawInfo->m_nStackMaxDataNum = nDefectNum;
   m_pGlassRawInfo->m_nRawMergeMaxDataNum = nDefectNum;
   m_pGlassRawInfo->m_nGlassRawDataSize;
   {
      int nDataNum = 0;
@@ -71,6 +76,9 @@
      m_pGlassRawInfo->m_nStackDataPoint = nDataNum;
      nDataNum += (m_pGlassRawInfo->m_nSizeOfStackData + m_pGlassRawInfo->m_nSizeOfStackData % 4)*nDefectNum;
      
      m_pGlassRawInfo->m_nRawMergeDataPoint = nDataNum;
      nDataNum += (m_pGlassRawInfo->m_nSizeOfRawMergeData + m_pGlassRawInfo->m_nSizeOfRawMergeData % 4)*nDefectNum;
      m_pGlassRawInfo->m_nGlassRawDataSize = nDataNum;
   }
   
@@ -86,37 +94,40 @@
BOOL CDitGlassRawServer::CreateGlassRawInfo()
{
   if(m_hMapBasicInfo == NULL)
   {
      BOOL bCreateMem = TRUE;
      m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
         , 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
      if (::GetLastError() == ERROR_ALREADY_EXISTS)
      {
         m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
         bCreateMem = FALSE;
      }
      if (m_hMapBasicInfo)
      {
         m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
      }
      if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
      {
         if (m_hMapBasicInfo!=NULL)
         {
            ::UnmapViewOfFile(m_hMapBasicInfo);
            m_pGlassRawInfo = NULL;
         }
         m_pGlassRawInfo = NULL;
         return FALSE;
      }
//    if(m_hMapBasicInfo == NULL)
//    {
//       BOOL bCreateMem = TRUE;
//
//       m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
//          , 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
//
//       if (::GetLastError() == ERROR_ALREADY_EXISTS)
//       {
//          m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
//          bCreateMem = FALSE;
//       }
//
//       if (m_hMapBasicInfo)
//       {
//          m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
//       }
//
//       if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
//       {
//          if (m_hMapBasicInfo!=NULL)
//          {
//             ::UnmapViewOfFile(m_hMapBasicInfo);
//             m_pGlassRawInfo = NULL;
//          }
//          m_pGlassRawInfo = NULL;
//          return FALSE;
//       }
      //0으로 초기화
      if(bCreateMem && m_pGlassRawInfo)
      //if(bCreateMem && m_pGlassRawInfo)
      //_grmDitGlassRawInfo SemiServer;
   m_pGlassRawInfo = new _grmDitGlassRawInfo;
      if (m_pGlassRawInfo)
      {
         ZeroMemory(m_pGlassRawInfo,sizeof(_grmDitGlassRawInfo));
         
@@ -125,11 +136,12 @@
         m_pGlassRawInfo->m_nSizeOfCellData = sizeof(_grmCellData);
         m_pGlassRawInfo->m_nSizeOfDefectData = sizeof(_grmDefectData);
         m_pGlassRawInfo->m_nSizeOfStackData = sizeof(_grmDefectData);
         m_pGlassRawInfo->m_nSizeOfRawMergeData = sizeof(_grmDefectData);
         int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4;
      }
      
   }
   //}
   
@@ -138,46 +150,53 @@
BOOL CDitGlassRawServer::CreateGlassRawData()
{
   int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
   if(m_hMapGlassData == NULL)
   {
      BOOL bCreateMem = TRUE;
      m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
         , 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
      if (::GetLastError() == ERROR_ALREADY_EXISTS)
      {
         m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
         bCreateMem = FALSE;
      }
      if (m_hMapGlassData)
      {
         m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
      }
      if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
      {
         if (m_hMapGlassData != NULL)
         {
            ::UnmapViewOfFile(m_hMapGlassData);
            m_pGlassRawData = NULL;
         }
         m_pGlassRawData = NULL;
         return FALSE;
      }
      //0으로 초기화
      if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
   }
    int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
//
//    if(m_hMapGlassData == NULL)
//    {
//       BOOL bCreateMem = TRUE;
//
//       m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
//          , 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
//
//       if (::GetLastError() == ERROR_ALREADY_EXISTS)
//       {
//          m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
//          bCreateMem = FALSE;
//       }
//
//       if (m_hMapGlassData)
//       {
//          m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
//       }
//
//       if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
//       {
//          if (m_hMapGlassData != NULL)
//          {
//             ::UnmapViewOfFile(m_hMapGlassData);
//             m_pGlassRawData = NULL;
//          }
//          m_pGlassRawData = NULL;
//          return FALSE;
//       }
//
//       //0으로 초기화
//       if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
//    }
   
    //0으로 초기화
   m_pGlassRawData = new char[nGlassRawSharedSize];
    if(m_pGlassRawData)
      ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
   m_pGlassData  = (_grmGlassData*)&m_pGlassRawData[m_pGlassRawInfo->m_nGlassDataPoint];
   m_pBlockData  = (_grmBlockData*)&m_pGlassRawData[m_pGlassRawInfo->m_nBlockDataPoint];
   m_pCellData   = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint];
   m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint];
   m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint];
   m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint];
   return TRUE;
}