/////////////////////////////////////////////////////////////////// // INCLUDE /////////////////////////////////////////////////////////////////// #include "STDAFX.H" #include "ERRORFORMAT.H" /////////////////////////////////////////////////////////////////// // IMPLEMENTATION /////////////////////////////////////////////////////////////////// //*--------------------------------------------------------------- // TYPE : VARIABLE // NAME : CErrorFormat::m_hNetMsg //*--------------------------------------------------------------- // DESC : À©¼Ó ¿¡·¯Æ÷¸ËÀ» ¾ò±â À§ÇØ NETMSG.DLL ¿¡¼­ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ·ÎµåÇÏ´Â DLL ÇÚµéÀ» ¼ÒÀ¯ // PRGM : B4nFter // P.S.> // - ÃÖÃÊ 1ȸ¸¸ ·ÎµåÇÏ¸é ¸ðµç °´Ã¼°¡ °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç Áß°£¿¡ º¯°æµÉ ¿°·Áµµ ¾øÀ¸¹Ç·Î static ¸â¹ö·Î ÇÔ // - ÀÌ Å¬·¡½º¸¦ ¸â¹ö°´Ã¼·Î ¼ÒÀ¯ÇÑ ¸ðµç Ŭ·¡½ºµé¿¡¼­ m_hNetMsg ¸¦ °¢°¢ ÃʱâÈ­ÇÏ¿© ¹®Á¦°¡ µÇ¾úÀ½ (¿¡·¯¹øÈ£:8, ½Ã½ºÅÛÀÚ¿ø °í°¥) // - ÇØÁ¦´Â º°µµ·Î ÇÏÁö ¾ÊÀ¸¸ç ÇÁ·Î¼¼½º Á¾·á ½Ã ½Ã½ºÅÛÀÌ ¾Ë¾Æ¼­ ÇØÁ¦½ÃŰ´Â °ÍÀ¸·Î ÇÔ //*--------------------------------------------------------------- HMODULE CErrorFormat::m_hNetMsg = NULL; //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CErrorFormat::CErrorFormat //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CErrorFormat::CErrorFormat() { if (!m_hNetMsg) { m_hNetMsg = ::LoadLibraryEx(_T("netmsg.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE); } Clear(); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CErrorFormat::~CErrorFormat //*--------------------------------------------------------------- // DESC : ¼Ò¸êÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CErrorFormat::~CErrorFormat() { } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CErrorFormat::Write //*--------------------------------------------------------------- // DESC : ½Ã½ºÅÛ ¿¡·¯Äڵ带 ÇØ¼®ÇÏ¿© ¸Þ½ÃÁö ÀúÀå // PARM : 1 . iErrorCode - ½Ã½ºÅÛ ¿¡·¯ÄÚµå // 2 . lpszErrorMessage - Ãß°¡ÇÒ ¿¡·¯¸Þ½ÃÁö // RETV : ÇØ¼®µÈ ¿¡·¯ ¸Þ½ÃÁö // PRGM : B4nFter //*--------------------------------------------------------------- CONST LPTSTR CErrorFormat::Write(INT iErrorCode, LPCTSTR lpszErrorMessage) { DWORD dwFormatFlags = FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM; LPCVOID lpModule = NULL; if (iErrorCode >= NERR_BASE && iErrorCode <= MAX_NERR && NULL != m_hNetMsg) { lpModule = m_hNetMsg; dwFormatFlags |= FORMAT_MESSAGE_FROM_HMODULE; } m_szSystemErrorMessage[0] = _T('\0'); ::FormatMessage(dwFormatFlags, lpModule, iErrorCode, 0, m_szSystemErrorMessage, COUNT_OF(m_szSystemErrorMessage), NULL); if (m_szSystemErrorMessage[0] != _T('\0')) { LPTSTR lpszNewLine = _tcschr(m_szSystemErrorMessage, _T('\r')); if (lpszNewLine) { *lpszNewLine = _T('\0'); } SNPRINTF(MODE_DBG_EX(m_szTotalErrorMessage, COUNT_OF(m_szTotalErrorMessage)), COUNT_OF(m_szTotalErrorMessage), _T("[%d] %s"), iErrorCode, m_szSystemErrorMessage); } if (lpszErrorMessage) { STRNCAT(m_szTotalErrorMessage, lpszErrorMessage, COUNT_OF(m_szTotalErrorMessage)); } m_iErrorCode = iErrorCode; return m_szTotalErrorMessage; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CErrorFormat::Write //*--------------------------------------------------------------- // DESC : »ç¿ëÀÚ ¸Þ½ÃÁö ÀúÀå // PARM : 1 . lpszErrorMessage - »ç¿ëÀÚ ¿¡·¯¸Þ½ÃÁö // RETV : ÀúÀåµÈ ¿¡·¯ ¸Þ½ÃÁö // PRGM : B4nFter //*--------------------------------------------------------------- CONST LPTSTR CErrorFormat::Write(LPCTSTR lpszErrorMessage) { if (lpszErrorMessage) { _tcsncpy_s(m_szTotalErrorMessage, COUNT_OF(m_szTotalErrorMessage), lpszErrorMessage, _TRUNCATE); } else { _tcsncpy_s(m_szTotalErrorMessage, COUNT_OF(m_szTotalErrorMessage), _T(""), _TRUNCATE); } m_iErrorCode = 0; return m_szTotalErrorMessage; }