DragonNest/Server/ServiceMonitorEx/Source/ErrorFormat.cpp

126 lines
7.8 KiB
C++
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////////
// INCLUDE
///////////////////////////////////////////////////////////////////
#include "STDAFX.H"
#include "ERRORFORMAT.H"
///////////////////////////////////////////////////////////////////
// IMPLEMENTATION
///////////////////////////////////////////////////////////////////
//*---------------------------------------------------------------
// TYPE : VARIABLE
// NAME : CErrorFormat::m_hNetMsg
//*---------------------------------------------------------------
// DESC : Ǎ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> NETMSG.DLL <EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD>Ѕ<EFBFBD><<EFBFBD>\<EFBFBD> \<EFBFBD>ܴ<EFBFBD> DLL x<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>
// PRGM : B4nFter
// P.S.>
// - \<EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD>̹ \<EFBFBD>ܴX<EFBFBD>t<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>t<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><<EFBFBD>p<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>$<EFBFBD>ij <EFBFBD><EFBFBD><<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> static d<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> h<EFBFBD>
// - t<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> d<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m_hNetMsg |<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>0<EFBFBD>T<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>L<EFBFBD> (<EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>:8, <EFBFBD>¤<EFBFBD>\ѐ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>)
// - t<EFBFBD>Ȕ<EFBFBD> ļij\<EFBFBD> X<EFBFBD><EFBFBD><EFBFBD> J<EFBFBD><<EFBFBD>p<EFBFBD> <EFBFBD>\<EFBFBD>8<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD≯ <EFBFBD><EFBFBD> <EFBFBD>¤<EFBFBD>\<EFBFBD>t<EFBFBD> L<EFBFBD>D<EFBFBD><EFBFBD> t<EFBFBD><EFBFBD><EFBFBD>¤Д<EFBFBD> <EFBFBD><EFBFBD><<EFBFBD>\<EFBFBD> h<EFBFBD>
//*---------------------------------------------------------------
HMODULE CErrorFormat::m_hNetMsg = NULL;
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CErrorFormat::CErrorFormat
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>
// 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 : <EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CErrorFormat::~CErrorFormat()
{
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CErrorFormat::Write
//*---------------------------------------------------------------
// DESC : <EFBFBD>¤<EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>ܴ|<EFBFBD> t<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȥ<EFBFBD>
// PARM : 1 . iErrorCode - <EFBFBD>¤<EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>ܴ
// 2 . lpszErrorMessage - <EFBFBD><EFBFBD><EFBFBD>`<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : t<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 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 : <EFBFBD><EFBFBD><EFBFBD>Ɛ<EFBFBD> T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȥ<EFBFBD>
// PARM : 1 . lpszErrorMessage - <EFBFBD><EFBFBD><EFBFBD>Ɛ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : ȥ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 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;
}