| | |
| | | |
| | | CDitGlassRawServer::~CDitGlassRawServer(void) |
| | | { |
| | | delete m_pGlassRawData; |
| | | delete m_pGlassRawInfo; |
| | | |
| | | if (m_hMapBasicInfo!=NULL) |
| | | { |
| | | ::UnmapViewOfFile(m_hMapBasicInfo); |
| | |
| | | || 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; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | |
| | | 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)); |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | //} |
| | | |
| | | |
| | | |
| | |
| | | |
| | | 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; |
| | | } |