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\n:%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); }