//=============================================================================* // COPYRIGHT© 2001 Microsoft Corporation and Executive Software International, Inc. //=============================================================================* // File: ErrMsg.cpp //=============================================================================* #include "stdafx.h" #include #include "ErrMacro.h" #include "Message.h" #include "ErrLog.h" #include "Dfrgres.h" #include "IntFuncs.h" #include "vString.hpp" #include "GetDfrgRes.h" // to use the GetDfrgResHandle() //This logfile capability is activated only for the engines. #if defined(DFRGFAT) || defined(DFRGNTFS) #include "LogFile.h" extern BOOL bLogFile; #endif extern BOOL bPopups; extern BOOL bIdentifiedErrorPath; extern HINSTANCE hInst; //-------------------------------------------------------------------* // function: ErrorMessageBox // // returns: None // note: //-------------------------------------------------------------------* BOOL ErrorMessageBox( TCHAR* cMsg, TCHAR* cTitle ) { //Added cNewMsg code to take care of the case where cMsg == NULL, so that we put some message //out instead of nothing. TCHAR cNewMsg[256]; if(cMsg == NULL) { FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, // source and processing options NULL, // message source NULL, // message identifier NULL, // language identifier cNewMsg, // message buffer 255, // maximum size of message buffer NULL // array of message inserts ); } else { wcscpy(cNewMsg, cMsg); } #ifndef OFFLINEDK //Write the error to the error log. WriteErrorToErrorLog(cNewMsg, -1, NULL); //This logfile capability is activated only for the engines. #if defined(DFRGFAT) || defined(DFRGNTFS) //If the logfile for the test harness is enabled, then log it there too. if(bLogFile){ WriteStringToLogFile(cNewMsg); //return TRUE; //Have to bail out here so we don't print the messagebox below. } #endif //If this is set for messageboxes (not IoStress) then pop up a messagebox too. if(bPopups && !bIdentifiedErrorPath){ MessageBox(NULL, cNewMsg, cTitle, MB_ICONSTOP|MB_OK); //Once an error message has been printed, don't print another. bIdentifiedErrorPath = TRUE; } #endif return TRUE; } //-------------------------------------------------------------------* // function: FileBugReportMessage // // returns: Always TRUE // FileBugReportMessage is identical to ErrorMessageBox, except that it puts up // a generic message telling the user to give us a log file // rather than pop up a message explaining the error. // This function is used when there is a code error, not when it isn't a bug, such as // when the user tells us to run on a volume that doesn't exist. //-------------------------------------------------------------------* BOOL FileBugReportMessage( TCHAR* cMsg, TCHAR* cTitle ) { #ifndef OFFLINEDK VString msg(IDS_FILE_BUG_MESSAGE, GetDfrgResHandle()); //Write the error to the error log. WriteErrorToErrorLog(cMsg, -1, NULL); //If this is set for messageboxes (not IoStress) then pop up a messagebox too. if(bPopups && !bIdentifiedErrorPath){ MessageBox(NULL, msg.GetBuffer(), cTitle, MB_OK|MB_ICONSTOP); //Once an error message has been printed, don't print another. bIdentifiedErrorPath = TRUE; } #endif return TRUE; }