void FormatErrCodeMessage(LPCTSTR lpszFunction, DWORD dwErrorCode)
{
// Retrieve the system error message for the error code
DWORD dwMaxTCharLen = 32000U;
LPTSTR lpDisplayBuf = (LPTSTR)LocalAlloc(LPTR, dwMaxTCharLen*sizeof(TCHAR));
LPTSTR lpMsgBuf = NULL;
if(FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, //dwFlags
NULL, //lpSource
dwErrorCode, //dwMessageId
0, //GetUserDefaultLangID(),// MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),//dwLanguageId
(LPTSTR)&lpMsgBuf, //lpBuffer
0, //nSize
NULL //Arguments
))
{
_stprintf_s(lpDisplayBuf, dwMaxTCharLen,
TEXT("%s failed with error code(%lu)\r
:%s"),
lpszFunction, dwErrorCode, lpMsgBuf);
}
else
{
_stprintf_s(lpDisplayBuf, dwMaxTCharLen,
TEXT("FormatMessage function failed with error %lu"),
GetLastError());
}
if(lpDisplayBuf)
MessageBox(NULL, lpDisplayBuf, TEXT("Error"), MB_OK);
if(lpMsgBuf)
LocalFree(lpMsgBuf);
if(lpDisplayBuf)
LocalFree(lpDisplayBuf);
//ExitProcess(dwErrorCode);
}