#pragma once #include #include class CDumpStatisticsDlg ; enum DUMP_FLUG { SERVER_NAME, SERVER_VERSION, EXCEPTION, FAULT_ADDRESS } ; typedef struct __DUMPMETADATA { CHAR byFaultAddress[50][ 10 ] ; // »»Àº ÁÖ¼Ò ¤Ñ¤Ñ; int nFaultCnt; CHAR byException[ 10 ] ; // ÀͼÁ¼Ç ÁÖ¼Ò CHAR szServerName[ 32 ] ; // ¼­¹ö À̸§ CHAR szFileName[ MAX_PATH ] ; // dump ÆÄÀϸí CHAR szVersion[ 8 ] ; CHAR szAvailabelVirtualMemory[ 15 ]; // °¡»ó ¸Þ¸ð¸® ¿©À¯ºÐ CHAR szTotalPhysicalMemory[ 15 ]; // ½ÇÁ¦ ¸Þ¸ð¸®·® CHAR szAdapterRAM[ 15 ]; // ºñµð¿À ·¥ CHAR szVideoProcessor[ 64 ]; // ºñµð¿À ÇÁ·Î¼¼¼­ CHAR szAvailableMemory[ 15 ]; // ¿©À¯ ¸Þ¸ð¸® DOUBLE fVersion ; // ¼­¹ö ¹öÀü __DUMPMETADATA(){ ClearData(); }; void ClearData() { memset( byFaultAddress, 0, sizeof( CHAR ) * 50 * 10 ); nFaultCnt = 0 ; memset( byException, 0, sizeof( CHAR ) * 10 ); memset( szServerName, 0, sizeof( CHAR ) * 32 ); memset( szFileName, 0, sizeof( CHAR ) * MAX_PATH ); strcpy( szVersion, "0.00" ); strcpy( szAvailabelVirtualMemory, "0" ); strcpy( szTotalPhysicalMemory, "0" ); strcpy( szAdapterRAM, "0" ); strcpy( szVideoProcessor, "0" ); strcpy( szAvailableMemory, "0" ); fVersion = 0; } }DUMPMETADATA, *LPDUMPMETADATA ; typedef struct __FILENAME { CHAR szFileName[ MAX_PATH ] ; }FILENAME, *LPFILENAME ; typedef struct __FAULTLIST { DOUBLE dwVersion; CHAR szFileName[ MAX_PATH ] ; }FAULTLIST, *LPFAULTLIST; typedef struct __DUMPDIRECTORYINFO { CHAR szDirectory[ MAX_PATH ] ; // ÇØ´ç Direcoty std::vector< LPFILENAME > vecDumpFileInfo ; // Vector ÆÄÀÏ } DUMPDIRECTORYINFO, *LPDUMPDIRECTORYINFO ; class CDumpLog { public: DOUBLE fVersion; // ¹öÀü CHAR szFaultAddress[ MAX_PATH ]; // Fault Address CHAR szFileName[ MAX_PATH ] ; // ÆÄÀϸí CHAR szVersion[ MAX_PATH ] ; // ¹öÀü CHAR szGraphicCard[ MAX_PATH ] ; //±×·¡ÇÈ Ä«µå UINT nBaseSystemMemory; //±âº» ½Ã½ºÅÛ ¸Þ¸ð¸® UINT nUsedSystemMemory; //»ç¿ë ½Ã½ºÅÛ ¸Þ¸ð¸® UINT nBaseLocalMemory; //±âº» Local ¸Þ¸ð¸® UINT nLeftMemory; //±âº» Local ¸Þ¸ð¸® - ³²Àº·® UINT nBaseAGPMemory; //±âº» AGP ¸Þ¸ð¸® UINT nUsedAGPMemory; //±âº» AGP ¸Þ¸ð¸® public: VOID Print2File( FILE* pFile ); CDumpLog(){}; ~CDumpLog(){}; }; class CDumpReport { private: std::vector< CDumpLog* > vecDumpFile; // ´ýÇÁ Á¤º¸ std::vector< LPFAULTLIST > vecFaultList; VOID AddFaultList( const char* szFault ); public: BOOL Write2File( const char* filename ); CDumpReport(){}; ~CDumpReport(); VOID PushFaultLog( LPDUMPMETADATA lpMeta ); }; class CDumpFileParser { private : CHAR m_szCurrentDirectory[ MAX_PATH ] ; // ÇöÀç µð·ºÅ丮 CHAR m_szCopyDirectory[ MAX_PATH ] ; // ¼ø¼­¿¡ ¸Â°Ô º¹»çÇØ¼­ ³Ö´Â À§Ä¡ std::vector< LPDUMPDIRECTORYINFO > m_vecDumpDirectoryInfo ; UINT m_uiDumpSize ; CDumpStatisticsDlg* m_pDlg ; CDumpReport m_DumpReport; protected: VOID FindDumpDirectory( const char* path ) ; //ÇÏÀ§ µð·ºÅ丮¸¦ ÀüºÎ °Ë»öÇÏ¿© ÆÄÀÏÀ» ´ýÇÁ ÆÄÀÏ ¸ñ·Ï°ú µð·ºÅ丮 ¸ñ·ÏÀ» ¸¸µç´Ù. VOID FindDumpFile( LPDUMPDIRECTORYINFO pDirectoryInfo ) ; // ÇØ´ç µð·ºÅ丮¿¡¼­ÀÇ ÆÄÀÏ Ã£±â public : CDumpFileParser( CDumpStatisticsDlg* pDlg ) ; ~CDumpFileParser(void); VOID SetDumpDirectory( LPCTSTR lpszDirectory ) { strcpy( m_szCurrentDirectory, lpszDirectory ) ; sprintf( m_szCopyDirectory,"%s\\sort", m_szCurrentDirectory ) ; ::SetCurrentDirectory( m_szCurrentDirectory ); ::CreateDirectory( "sort", NULL ) ; } VOID LoadDumpFile() ; HRESULT CheckLine( CHAR* strLine, LPDUMPMETADATA lpMetaData ) ; HRESULT CheckMoreDump( FILE* pFile, LPDUMPMETADATA lpMetaData ) ; const char* MakeDirectory( LPDUMPMETADATA lpMetaData, int nCnt ); // ÇØ´ç ´ýÇÁÇÏ´Â µð·ºÅ丮¸¦ ¸¸µé°í ÇØ´ç µð·ºÅ丮 À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. BOOL CopyFileExt( LPDUMPMETADATA lpMetaData, LPSTR lpszFileName ); //======================================================= // Directory °ü·Ã //======================================================= VOID FindDumpDirectory() ; //ÇÏÀ§ µð·ºÅ丮¸¦ ÀüºÎ °Ë»öÇÏ¿© ÆÄÀÏÀ» ´ýÇÁ ÆÄÀÏ ¸ñ·Ï°ú µð·ºÅ丮 ¸ñ·ÏÀ» ¸¸µç´Ù. };