BYTE* pbyGetFilterConfig(BYTE* pbyTrgBuffer, CModuleFilterArray* pouModuleFilterArray, const SFILTERAPPLIED_CAN* SrcFilter) { BYTE* pbyTemp = pbyTrgBuffer; USHORT ushFilterCount = 0; if (pouModuleFilterArray != NULL && (SrcFilter != NULL)) { ushFilterCount = (USHORT)pouModuleFilterArray->GetSize(); } SFILTERAPPLIED_CAN sFilterApplied; sFilterApplied.vClear(); sFilterApplied.m_bEnabled = TRUE; sFilterApplied.m_ushTotal = ushFilterCount; sFilterApplied.m_psFilters = new SFILTERSET[sFilterApplied.m_ushTotal]; for (INT i = 0; i < ushFilterCount; i++) { //update filter applied SMODULEFILTER sModuleFilter = pouModuleFilterArray->GetAt(i); SFILTERSET* psFilterSet = SFILTERSET::psGetFilterSetPointer(SrcFilter->m_psFilters, SrcFilter->m_ushTotal, sModuleFilter.m_omFilterName); if (psFilterSet != NULL) { sFilterApplied.m_psFilters[i].bClone(*psFilterSet); } } pbyTemp = sFilterApplied.pbGetConfigData(pbyTemp); sFilterApplied.vClear(); return pbyTemp; }
BOOL CConfigAdapter::bGetConfigData(BYTE*& lpData, int& nStreamLength, eSECTION_ID eSectionId) { BOOL bReturn = TRUE; switch (eSectionId) { case MAINFRAME_SECTION_ID: { UINT unSize = 0; BYTE* pbyConfigData = NULL; //FIRST CALC SIZE REQUIRED unSize += sizeof(BYTE); //Configuration version unSize += (sizeof(char) * MAX_PATH); unSize += sizeof(STOOLBARINFO); //ALLOCATE THE MEMORY pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; //UPDATE THE DATA BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); CString* pomMRU_C_FILE_NAME = NULL; m_ouConfigDetails.bGetData(MRU_C_FILE_NAME, (void**)(&pomMRU_C_FILE_NAME)); char acName[MAX_PATH] = {_T('0')}; ASSERT(pomMRU_C_FILE_NAME != NULL); strcpy_s(acName, pomMRU_C_FILE_NAME->GetBuffer(MAX_PATH)); delete pomMRU_C_FILE_NAME; COPY_DATA(pbyTemp, acName, (sizeof(char) * MAX_PATH)); PSTOOLBARINFO psToolBarInfo = NULL; m_ouConfigDetails.bGetData(TOOLBAR_DETAILS, (void**)(&psToolBarInfo)); ASSERT(psToolBarInfo != NULL); COPY_DATA(pbyTemp, psToolBarInfo, sizeof(STOOLBARINFO)); delete psToolBarInfo; lpData = pbyConfigData; nStreamLength = unSize; } break; case LOG_SECTION_ID: { UINT unSize = 0; BYTE* pbyConfigData = NULL; SLOGCONFIGDETS* psLogConfigDets = NULL; m_ouConfigDetails.bGetData(LOG_CONFIG_DETS, (void**)(&psLogConfigDets)); //FIRST CALCULATE SIZE REQUIRED unSize += sizeof(BYTE);//Configuration version if (psLogConfigDets != NULL) { //Filter info size SFILTERAPPLIED_CAN* psFilterConfigured = NULL; m_ouConfigDetails.bGetData(FILTER_CONFIG_DETS, (void**)(&psFilterConfigured)); unSize += sizeof (USHORT); // Log file count for (UINT i = 0; i < psLogConfigDets->m_unCount; i++) { //log info size SLOGINFO sLogInfo; unSize += sLogInfo.unGetSize(); CModuleFilterArray* pModuleFilterArray = (&(psLogConfigDets->m_asLogFileDets[i].m_omFilter)); unSize += unGetFilterSize(pModuleFilterArray, psFilterConfigured); } //CALCULATING SIZE ENDS //NOW UPDATE THE VALUES pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); memcpy(pbyTemp, &(psLogConfigDets->m_unCount), sizeof (USHORT)); pbyTemp += sizeof (USHORT); for (UINT i = 0; i < psLogConfigDets->m_unCount; i++) { //log info SLOGINFO sLogInfo; vPopulateLogInfo(sLogInfo, psLogConfigDets->m_asLogFileDets[i]); pbyTemp = sLogInfo.pbGetConfigData(pbyTemp); //Filter info size CModuleFilterArray* pomFilterArray = &(psLogConfigDets->m_asLogFileDets[i].m_omFilter); pbyTemp = pbyGetFilterConfig(pbyTemp, pomFilterArray, psFilterConfigured); } //Now update the parameter out pointer lpData = pbyConfigData; nStreamLength = unSize; } } break; case SIMSYS_SECTION_ID: { PSSIMSYSARRAY psSimSysArray; UINT unSize = 0; //FIRST CALCULATE THE SIZE REQUIRED MEANWHILE RETRIEVE THE DATA unSize += sizeof(BYTE);//Configuration version WINDOWPLACEMENT WndPlacement; //retrieve the window placement m_ouConfigDetails.bGetDefaultValue(SIMSYS_WND_PLACEMENT,WndPlacement); unSize += sizeof(WINDOWPLACEMENT); m_ouConfigDetails.bGetData(SIMSYS_LIST, (void**)(&psSimSysArray)); PSSIMSYSARRAY psTemp = psSimSysArray; UINT nCount = 0; unSize += sizeof(UINT); // To store count while (psTemp != NULL) { nCount++; unSize += (sizeof (char) * MAX_PATH);//File Path psTemp = psTemp->psNextSimsys; } unSize += sizeof (WINDOWPLACEMENT);// Window placement for out window //CALCULATE THE SIZE MEANWHILE RETRIEVE THE DATA ENDS // ALLOCATE THE MEMORY BYTE* pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; //UPDATE THE DATA BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); //update window placement COPY_DATA(pbyTemp, &WndPlacement, sizeof(WINDOWPLACEMENT)); //Update Simsys file path psTemp = psSimSysArray; COPY_DATA(pbyTemp, &nCount, sizeof(UINT)); while (psTemp != NULL) { char acFilePath[MAX_PATH] = {_T('\0')}; strcpy_s(acFilePath, psTemp->m_omStrSimSysPath.GetBuffer(MAX_PATH)); COPY_DATA(pbyTemp, acFilePath, (sizeof(char) * MAX_PATH)); psTemp = psTemp->psNextSimsys; } //update out window placement WINDOWPLACEMENT* pWndPlacement = &WndPlacement; m_ouConfigDetails.bGetData(OUT_WND_PLACEMENT, (void**)(&pWndPlacement)); COPY_DATA(pbyTemp, &WndPlacement, sizeof(WINDOWPLACEMENT)); //UPDATE THE DATA ENDS //FINALLY UPDATE THE OUT PARAM lpData = pbyConfigData; nStreamLength = unSize; } break; case REPLAY_SECTION_ID: { UINT unSize = 0; BYTE* pbyConfigData = NULL; SREPLAYDETS* psRepConfigDets = NULL; unSize += sizeof(BYTE);//Configuration version m_ouConfigDetails.bGetData(REPLAY_CONFIG_DETS, (void**)(&psRepConfigDets)); if (psRepConfigDets != NULL) { //FIRST CALCULATE SIZE REQUIRED SFILTERAPPLIED_CAN* psFilterConfigured = NULL; m_ouConfigDetails.bGetData(FILTER_CONFIG_DETS, (void**)(&psFilterConfigured)); unSize += sizeof (INT); // for (UINT i = 0; i < psRepConfigDets->m_unCount; i++) { unSize += unGetReplayFileSize(psRepConfigDets->m_asReplayFile[i]); unSize += unGetFilterSize(&(psRepConfigDets->m_asReplayFile[i].m_omFilter), psFilterConfigured); } unSize += sizeof(WINDOWPLACEMENT); //CALCULATING SIZE ENDS //NOW UPDATE THE VALUES pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); memcpy(pbyTemp, &(psRepConfigDets->m_unCount), sizeof (INT)); pbyTemp += sizeof (INT); for (UINT i = 0; i < psRepConfigDets->m_unCount; i++) { pbyTemp = pbGetReplayFileConfig(psRepConfigDets->m_asReplayFile[i], pbyTemp); //Filter info size pbyTemp = pbyGetFilterConfig(pbyTemp, &(psRepConfigDets->m_asReplayFile[i].m_omFilter), psFilterConfigured); } //Update window placement WINDOWPLACEMENT WndPlacement; WINDOWPLACEMENT* pWndPlacement = &WndPlacement; m_ouConfigDetails.bGetData(REPLAY_WND_PLACEMENT, (void**)(&pWndPlacement)); memcpy(pbyTemp, &WndPlacement, sizeof(WINDOWPLACEMENT)); pbyTemp += sizeof(WINDOWPLACEMENT); //Now update the parameter out pointer lpData = pbyConfigData; nStreamLength = unSize; } } break; case MSGWND_SECTION_ID: { UINT unSize = 0; BYTE* pbyConfigData = NULL; //FIRST CALC SIZE unSize += sizeof(BYTE);//Configuration version PSMESSAGE_ATTRIB psMsgAttrib = NULL; m_ouConfigDetails.bGetData(MSG_ATTRIBUTES, (void**)(&psMsgAttrib)); unSize += sizeof (UINT);// To store count of MsgAttribs if (psMsgAttrib != NULL) { UINT nCount = psMsgAttrib->m_usMsgCount; //Count To store Msg Name MsgId Msg Color unSize += (nCount * ((sizeof (char) * MAX_PATH) + sizeof(UINT) + sizeof (COLORREF))); } INT anMsgBuffSize[defDISPLAY_CONFIG_PARAM] = {0}; m_ouConfigDetails.bGetData(MSG_BUFFER_SIZE, (void**)(&anMsgBuffSize)); unSize += (sizeof (INT) * defDISPLAY_CONFIG_PARAM); CModuleFilterArray ouModuleFilterArray; CModuleFilterArray* pouModuleFilterArray = &ouModuleFilterArray; m_ouConfigDetails.bGetData(MSG_DISPLAY_FILTER_DETAILS, (void**)(&pouModuleFilterArray)); SFILTERAPPLIED_CAN* psFilterConfigured = NULL; m_ouConfigDetails.bGetData(FILTER_CONFIG_DETS, (void**)(&psFilterConfigured)); //Filter size unSize += unGetFilterSize(&ouModuleFilterArray, psFilterConfigured); //MsgFormat window config data unSize += sizeof(BYTE);//Msg frmt windows version information unSize += sizeof(UINT);//buffer size //CALC SIZE ENDS //ALLOCATE THE MEMORY pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; //UPDATE THE DATA BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); //Attributes if (psMsgAttrib != NULL) { COPY_DATA(pbyTemp, &(psMsgAttrib->m_usMsgCount), sizeof(UINT)); for (INT i = 0; i < psMsgAttrib->m_usMsgCount; i++) { char acName[MAX_PATH] = {_T('\0')}; strcpy_s(acName, psMsgAttrib->m_psMsgAttribDetails[i].omStrMsgname); COPY_DATA(pbyTemp, acName, (sizeof(char) * MAX_PATH)); COPY_DATA(pbyTemp, &(psMsgAttrib->m_psMsgAttribDetails[i].unMsgID), sizeof(UINT)); COPY_DATA(pbyTemp, &(psMsgAttrib->m_psMsgAttribDetails[i].sColor), sizeof(COLORREF)); } } m_ouConfigDetails.vRelease(MSG_ATTRIBUTES, (LPVOID*)(&psMsgAttrib)); //Display buffer size COPY_DATA(pbyTemp, anMsgBuffSize, (sizeof (INT) * defDISPLAY_CONFIG_PARAM)); //Filters pbyTemp = pbyGetFilterConfig(pbyTemp, &ouModuleFilterArray, psFilterConfigured); //Msg format window default values BYTE byVer = 0x0;//version information COPY_DATA(pbyTemp, &byVer, sizeof(BYTE)); UINT unMsgWndCfgSize = 0; COPY_DATA(pbyTemp, &unMsgWndCfgSize, sizeof(UINT)); //Update the out parameters lpData = pbyConfigData; nStreamLength = unSize; } break; case SIGWATCH_SECTION_ID: { UINT unSize = 0; BYTE* pbyConfigData = NULL; PSSIGNALWATCHLIST psSigWatchList = NULL; m_ouConfigDetails.bGetData(SIGNAL_WATCH_LIST, (void**)(&psSigWatchList)); //Find the Size unSize += sizeof(BYTE);//Configuration version UINT unMsgcount = 0; unSize += sizeof (UINT); // To store Msg Count PSSIGNALWATCHLIST psTemp = psSigWatchList; while (psTemp != NULL) { unMsgcount++; unSize += sizeof (UINT); // To store Msg ID unSize += (sizeof (char) * MAX_PATH);// To store Msg Name unSize += sizeof (UINT); //To store selected signal count INT nSelCount = psTemp->omCSASignals.GetSize(); for (INT i = 0; i < nSelCount; i++) { unSize += sizeof (UINT); // To store Signal ID unSize += (sizeof (char) * MAX_PATH);// To store Signal Name } psTemp = psTemp->psNextMessageNode; } unSize += sizeof (WINDOWPLACEMENT); // window placement size //ALLOCATE THE MEMORY pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; //UPDATE THE DATA BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); //Find the Size COPY_DATA(pbyTemp, &unMsgcount, sizeof (UINT)); psTemp = psSigWatchList; while (psTemp != NULL) { COPY_DATA(pbyTemp, &(psTemp->unMsgID), sizeof (UINT)); char acName[MAX_PATH] = {_T('\0')}; COPY_DATA(pbyTemp, acName, (sizeof (char) * MAX_PATH)); UINT unSelCount = psTemp->omCSASignals.GetSize(); COPY_DATA(pbyTemp, &unSelCount, sizeof (UINT)); for (UINT i = 0; i < unSelCount; i++) { CString omSigName = psTemp->omCSASignals.GetAt(i); UINT unSigId = 0; COPY_DATA(pbyTemp, &(unSigId), sizeof (UINT)); strcpy_s(acName, omSigName.GetBuffer(MAX_PATH)); COPY_DATA(pbyTemp, acName, (sizeof (char) * MAX_PATH)); } psTemp = psTemp->psNextMessageNode; } //Signal Window placement WINDOWPLACEMENT wndPlacement; WINDOWPLACEMENT* pWndPlacement = &wndPlacement; m_ouConfigDetails.bGetData(SIGWATCH_WND_PLACEMENT, (void**)(&pWndPlacement)); COPY_DATA(pbyTemp, &wndPlacement, sizeof (WINDOWPLACEMENT)); //Update the out parameters lpData = pbyConfigData; nStreamLength = unSize; } break; case DIL_SECTION_ID: { PSCONTROLLER_DETAILS psContrlDets; BYTE* pbyConfigData = NULL; UINT unSize = 0; unSize += sizeof(BYTE);//Configuration version unSize += sizeof(DWORD); unSize += sizeof(BYTE); unSize += (sizeof(SCONTROLLER_DETAILS) * defNO_OF_CHANNELS); if (m_ouConfigDetails.bGetData(CONTROLLER_DETAILS, (void**)(&psContrlDets))) { pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); DWORD dwDriverId = DRIVER_CAN_STUB; COPY_DATA(pbyTemp, &dwDriverId, sizeof(DWORD)); BYTE byContlrMode = defMODE_SIMULATE; COPY_DATA(pbyTemp, &byContlrMode, sizeof(BYTE)); COPY_DATA(pbyTemp, psContrlDets, unSize); m_ouConfigDetails.vRelease(CONTROLLER_DETAILS, (LPVOID*)(&psContrlDets)); } lpData = pbyConfigData; nStreamLength = unSize; } break; case GRAPH_SECTION_ID: { BYTE byVersion = 0x1; BYTE* pbyConfigData = NULL; UINT unSize = 0; CGraphList* podGraphList; m_ouConfigDetails.bGetData(SIGNAL_GRAPH_LIST, (void**)(&podGraphList)); //FIRST CALCULATE THE SIZE unSize += sizeof(BYTE); //Configuration version if (podGraphList != NULL) { unSize += podGraphList->unGetConfigSize(byVersion); } unSize += sizeof (WINDOWPLACEMENT); unSize += sizeof (SGRAPHSPLITTERDATA); //Splitter data //ALLOCATE THE MEMORY pbyConfigData = new BYTE[unSize]; BYTE* pbyTemp = pbyConfigData; //UPDATE THE DATA COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); if (podGraphList != NULL) { pbyTemp = podGraphList->pbyGetConfigData(pbyTemp, byVersion); } //UPDATE GRAPH WINDOW PLACEMENT WINDOWPLACEMENT wndPalcement; WINDOWPLACEMENT* pWndPalcement = &wndPalcement; m_ouConfigDetails.bGetData(GRAPH_WND_PLACEMENT, (void**)(&pWndPalcement)); COPY_DATA(pbyTemp, &wndPalcement, sizeof (WINDOWPLACEMENT)); SGRAPHSPLITTERDATA sGraphSplitterData; PSGRAPHSPLITTERDATA psGraphSplitterData = &sGraphSplitterData; m_ouConfigDetails.bGetData(GRAPH_WND_SPLITTER_DATA, (void**)(&psGraphSplitterData)); COPY_DATA(pbyTemp, &sGraphSplitterData, sizeof (SGRAPHSPLITTERDATA)); //UPDATE OUT PARAMS lpData = pbyConfigData; nStreamLength = unSize; } break; case TXWND_SECTION_ID: { BYTE* pbyCfgData = NULL; UINT unSize = 0; //FIRST CALCULATE THE SIZE unSize += sizeof(BYTE); //Configuration version UINT unBlockCount = 0; UINT* punBlockCount = &unBlockCount; m_ouConfigDetails.bGetData(MSG_BLOCK_COUNT, (void**)(&punBlockCount)); unSize += sizeof (UINT); //block count PSMSGBLOCKLIST psMsgBlockList = NULL; if (m_ouConfigDetails.bGetData(SEND_MULTI_MSGS, (void**)(&psMsgBlockList))) { PSMSGBLOCKLIST psTemp = psMsgBlockList; while (psTemp != NULL) { unSize += (sizeof(char) * MAX_PATH); // To store the block name unSize += sizeof(UCHAR); // To store the trigger unSize += sizeof(BOOL); // To store active or not unSize += sizeof(UCHAR); // To store the key value unSize += sizeof (UINT); // to store the timeinterval unSize += sizeof (BOOL); // Type unSize += sizeof (BOOL); // Send All msgs unSize += sizeof(UINT);// To store no of msgs in each block unSize += (psTemp->m_unMsgCount) * sizeof (STXCANMSGDETAILS); psTemp = psTemp->m_psNextMsgBlocksList; } } unSize += sizeof(WINDOWPLACEMENT); unSize += sizeof(STXMSGSPLITTERDATA); //ALLOCATE THE MEMORY pbyCfgData = new BYTE[unSize]; BYTE* pbyTemp = pbyCfgData; BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); COPY_DATA(pbyTemp, &unBlockCount, sizeof(UINT)); PSMSGBLOCKLIST psTempBlock = psMsgBlockList; while (psTempBlock != NULL) { CString m_omStrBlockName; char acName[MAX_PATH] = {_T('\0')}; strcpy_s(acName, psTempBlock->m_omStrBlockName.GetBuffer(MAX_PATH)); COPY_DATA(pbyTemp, acName, (sizeof(char) * MAX_PATH)); COPY_DATA(pbyTemp, &(psTempBlock->m_ucTrigger), sizeof(UCHAR)); COPY_DATA(pbyTemp, &(psTempBlock->m_bActive), sizeof(BOOL)); COPY_DATA(pbyTemp, &(psTempBlock->m_ucKeyValue), sizeof(UCHAR)); COPY_DATA(pbyTemp, &(psTempBlock->m_unTimeInterval), sizeof(UINT)); COPY_DATA(pbyTemp, &(psTempBlock->m_bType), sizeof(BOOL)); COPY_DATA(pbyTemp, &(psTempBlock->m_bTxAllFrame), sizeof(BOOL)); COPY_DATA(pbyTemp, &(psTempBlock->m_unMsgCount), sizeof(UINT)); PSTXCANMSGLIST psTempCanList = psTempBlock->m_psTxCANMsgList; while (psTempCanList != NULL) { COPY_DATA(pbyTemp, &(psTempCanList->m_sTxMsgDetails), sizeof (STXCANMSGDETAILS)); psTempCanList = psTempCanList->m_psNextMsgDetails; } psTempBlock = psTempBlock->m_psNextMsgBlocksList; } m_ouConfigDetails.vRelease(SEND_MULTI_MSGS, (LPVOID*)&psMsgBlockList); //Get the Tx window placement WINDOWPLACEMENT WndPlacement; WINDOWPLACEMENT* pWndPlacement = &WndPlacement; m_ouConfigDetails.bGetData(TX_WND_PLACEMENT, (void**)(&pWndPlacement)); COPY_DATA(pbyTemp, &WndPlacement, sizeof(WINDOWPLACEMENT)); //Get the Tx splitter position STXMSGSPLITTERDATA sTxSpliiterData; STXMSGSPLITTERDATA* psTxSpliiterData = &sTxSpliiterData; m_ouConfigDetails.bGetData(TX_MSG_WND_SPLITTER_DATA, (void**)(&psTxSpliiterData)); COPY_DATA(pbyTemp, &sTxSpliiterData, sizeof(STXMSGSPLITTERDATA)); //Update the OUT PARAMETERS lpData = pbyCfgData; nStreamLength = unSize; } break; case DATABASE_SECTION_ID: { BYTE* pbyCfgData = NULL; UINT unSize = 0; CStringArray* pomStrDBArray = NULL; m_ouConfigDetails.bGetData(DATABASE_FILE_NAME, (void**)(&pomStrDBArray)); //FIRST CALC SIZE unSize += sizeof(BYTE); //Configuration version unSize += sizeof (UINT); // To store the count if (pomStrDBArray != NULL) { //To store the stringd unSize += (pomStrDBArray->GetSize()) * (sizeof(char) * MAX_PATH); } //ALLOCATE THE MEMORY pbyCfgData = new BYTE[unSize]; BYTE* pbyTemp = pbyCfgData; //UPDATE THE DATA BYTE byVersion = 0x1; COPY_DATA(pbyTemp, &byVersion, sizeof(BYTE)); UINT unCount = 0; if (pomStrDBArray != NULL) { unCount = pomStrDBArray->GetSize(); } COPY_DATA(pbyTemp, &unCount, sizeof(UINT)); for (UINT i =0; i < unCount; i++) { CString omName = pomStrDBArray->GetAt(i); char acName[MAX_PATH] = {_T('\0')}; strcpy_s(acName, omName.GetBuffer(MAX_PATH)); COPY_DATA(pbyTemp, acName, (sizeof(char) * MAX_PATH)); } m_ouConfigDetails.vRelease(DATABASE_FILE_NAME,(LPVOID*)&pomStrDBArray); //UPDATE THE OUT PARAMETER lpData = pbyCfgData; nStreamLength = unSize; } break; case FILTER_SECTION_ID: { BYTE* pbyCfgData = NULL; UINT unSize = 0; SFILTERAPPLIED_CAN* psFilterConfigured = NULL; m_ouConfigDetails.bGetData(FILTER_CONFIG_DETS, (void**)(&psFilterConfigured)); if (psFilterConfigured != NULL) { unSize += psFilterConfigured->unGetSize(); } pbyCfgData = new BYTE[unSize]; BYTE* pbyTemp = pbyCfgData; pbyTemp = psFilterConfigured->pbGetConfigData(pbyTemp); BYTE byVersion = 0x1; memcpy(pbyCfgData, &byVersion, sizeof(BYTE)); lpData = pbyCfgData; nStreamLength = unSize; } break; default: { ASSERT(FALSE); } break; } return bReturn; }