[commit] r1608 - in trunk/GME/Lib/CrashRpt: bin bin/x64 include lib lib/x64

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Wed Oct 12 12:46:14 CDT 2011


Author: ksmyth
Date: Wed Oct 12 12:46:14 2011
New Revision: 1608

Log:
CrashRpt v1.2.10 x86 x64

Added:
   trunk/GME/Lib/CrashRpt/bin/x64/
   trunk/GME/Lib/CrashRpt/bin/x64/CrashRpt.dll
   trunk/GME/Lib/CrashRpt/bin/x64/CrashRptd.dll
   trunk/GME/Lib/CrashRpt/bin/x64/CrashSender.exe
   trunk/GME/Lib/CrashRpt/bin/x64/CrashSenderd.exe
   trunk/GME/Lib/CrashRpt/bin/x64/crashrpt_lang.ini   (contents, props changed)
      - copied, changed from r1607, trunk/GME/Lib/CrashRpt/bin/crashrpt_lang.ini
   trunk/GME/Lib/CrashRpt/lib/x64/
   trunk/GME/Lib/CrashRpt/lib/x64/CrashRpt.lib
   trunk/GME/Lib/CrashRpt/lib/x64/CrashRptd.lib
Deleted:
   trunk/GME/Lib/CrashRpt/bin/CrashRpt.pdb
   trunk/GME/Lib/CrashRpt/bin/CrashSender.pdb
Modified:
   trunk/GME/Lib/CrashRpt/bin/CrashRpt.dll
   trunk/GME/Lib/CrashRpt/bin/CrashSender.exe
   trunk/GME/Lib/CrashRpt/bin/crashrpt_lang.ini
   trunk/GME/Lib/CrashRpt/include/CrashRpt.h
   trunk/GME/Lib/CrashRpt/lib/CrashRpt.lib

Modified: trunk/GME/Lib/CrashRpt/bin/CrashRpt.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/CrashRpt/bin/CrashSender.exe
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/CrashRpt/bin/crashrpt_lang.ini
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/CrashRpt/bin/x64/CrashRpt.dll
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/bin/x64/CrashRpt.dll	Wed Oct 12 12:46:14 2011	(r1608) differ

Added: trunk/GME/Lib/CrashRpt/bin/x64/CrashRptd.dll
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/bin/x64/CrashRptd.dll	Wed Oct 12 12:46:14 2011	(r1608) differ

Added: trunk/GME/Lib/CrashRpt/bin/x64/CrashSender.exe
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/bin/x64/CrashSender.exe	Wed Oct 12 12:46:14 2011	(r1608) differ

Added: trunk/GME/Lib/CrashRpt/bin/x64/CrashSenderd.exe
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/bin/x64/CrashSenderd.exe	Wed Oct 12 12:46:14 2011	(r1608) differ

Copied and modified: trunk/GME/Lib/CrashRpt/bin/x64/crashrpt_lang.ini (from r1607, trunk/GME/Lib/CrashRpt/bin/crashrpt_lang.ini)
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/CrashRpt/include/CrashRpt.h
==============================================================================
--- trunk/GME/Lib/CrashRpt/include/CrashRpt.h	Wed Oct 12 12:45:51 2011	(r1607)
+++ trunk/GME/Lib/CrashRpt/include/CrashRpt.h	Wed Oct 12 12:46:14 2011	(r1608)
@@ -32,7 +32,7 @@
 
 /*! \file   CrashRpt.h
  *  \brief  Defines the interface for the CrashRpt.DLL.
- *  \date   2003-2010
+ *  \date   2003-2011
  *  \author Michael Carruth 
  *  \author zeXspectrum 
  */
@@ -66,7 +66,7 @@
 #define CRASHRPTAPI(rettype) CRASHRPT_EXTERNC rettype WINAPI
 
 //! Current CrashRpt version
-#define CRASHRPT_VER 1207
+#define CRASHRPT_VER 1210
 
 /*! \defgroup CrashRptAPI CrashRpt Functions */
 /*! \defgroup DeprecatedAPI Obsolete Functions */
@@ -75,35 +75,36 @@
 
 /*! \ingroup CrashRptAPI
  *  \brief Client crash callback function prototype
- *  \param[in] lpvState Not used, always equals to NULL.
+ *  \param[in] lpvState Currently not used, equals to NULL.
  *
  *  \remarks
+ *
  *  The crash callback function is called when crash occurs. This way client application is
  *  notified about the crash.
  *
  *  It is generally unsafe to do complex actions (e.g. memory allocation, heap operations) inside of this callback.
  *  The application state may be unstable.
+ *
+ *  One reason the application may use this callback for is to close handles to open log files that the 
+ *  application plans to include into the error report. Log files should be accessible for reading, otherwise
+ *  CrashRpt won't be able to include them into error report.
  *  
- *  The crash callback function should return \c TRUE to allow generate error report. It should 
- *  return \c FALSE to prevent crash report generation.
+ *  The crash callback function should typically return \c TRUE to allow generate error report.  
+ *  Returning \c FALSE will prevent crash report generation.
  *
- *  The following example shows how to use crash callback function.
+ *  The following example shows how to use the crash callback function.
  *
  *  \code
  *  // define the crash callback
  *  BOOL CALLBACK CrashCallback(LPVOID lpvState)
  *  {    
- *    // add custom log file to crash report
- *    crAddFile2(
- *       _T("C:\\Documents and Settings\\Application Data\\UserName\\MyApp\\Logs\\MyLog.txt"), 
- *       NULL,
- *       _T("My custom log file"),
- *       0);
+ *    // Do something...
  *
  *    return TRUE;
  *  }
- *
  *  \endcode
+ *
+ *  \sa crAddFile2()
  */
 typedef BOOL (CALLBACK *LPGETLOGFILE) (__reserved LPVOID lpvState);
 
@@ -125,12 +126,11 @@
  *
  *  \remarks
  *
- *    This function installs unhandled exception filter for all threads of calling process.
+ *    This function installs SEH exception filter for the caller process.
  *    It also installs various C++ exception/error handlers. For the list of handlers,
  *    please see crInstall().
  *
- *    \a pfnCallback defines the callback function that is called on crash. The callback can be
- *    used to add a custom file to crash report using AddFile() function. This parameter can be NULL.
+ *    \a pfnCallback defines the callback function that is called on crash. This parameter can be NULL.
  *
  *    \a pszEmailTo should be the valid email address of recipient. 
  *
@@ -190,8 +190,7 @@
  *
  *    Call this function on application exit to uninstall all previously installed exception
  *    handlers.
- *
- *    The \a lpState parameter is unused and should be NULL.
+ * 
  */
 
 CRASHRPTAPI(void)
@@ -204,7 +203,7 @@
  *  
  *  \param[in] lpState State information returned from Install(), ignored and should be NULL.
  *  \param[in] pszFile  Fully qualified file name.
- *  \param[in] pszDesc  Description of file, used by Error Report Details dialog.
+ *  \param[in] pszDesc  Description of the file, used by the Error Report Details dialog.
  *
  *  \deprecated
  *    This function is deprecated. It is still supported for compatiblity with
@@ -214,12 +213,9 @@
  *  \remarks
  *
  *    This function can be called anytime after Install() to add one or more
- *    files to the generated crash report. However, the recommended way is to 
- *    call this function in crash callback.
+ *    files to the generated crash report. 
  *
- *    \a pszFile should be a valid absolute path of a file to add to crash report. It
- *    is recommended to add small files (several KB in size). If a large file is added,
- *    the crash report sending procedure may fail.
+ *    \a pszFile should be a valid absolute path of a file to add to crash report. 
  *
  *    \a pszDesc is a description of a file. It can be NULL.
  *
@@ -275,8 +271,8 @@
  *
  *    Call this function to manually generate a crash report.
  *
- *    The crash report contains the crash minidump, crash log in XML format and
- *    additional optional files added with AddFile().
+ *    The crash report contains the crash minidump, crash description in XML format and
+ *    (optionally) additional files.
  *
  *    \a pExInfo defines the exception pointers for generating crash minidump file.
  *    If \a pExInfo is NULL, current CPU state is used to create exception pointers.
@@ -295,21 +291,21 @@
 #endif //_CRASHRPT_REMOVE_DEPRECATED
 
 // Array indices for CR_INSTALL_INFO::uPriorities.
-#define CR_HTTP 0 //!< Send error report via HTTP connection.
-#define CR_SMTP 1 //!< Send error report via SMTP connection.
+#define CR_HTTP 0  //!< Send error report via HTTP (or HTTPS) connection.
+#define CR_SMTP 1  //!< Send error report via SMTP connection.
 #define CR_SMAPI 2 //!< Send error report via simple MAPI (using default mail client).
 
 //! Special priority constant that allows to skip certain delivery method.
 #define CR_NEGATIVE_PRIORITY ((UINT)-1)
 
 // Flags for CR_INSTALL_INFO::dwFlags
-#define CR_INST_STRUCTURED_EXCEPTION_HANDLER   0x1    //!< Install SEH handler (deprecated name, use \ref CR_INST_SEH_EXCEPTION_HANDLER instead.
-#define CR_INST_SEH_EXCEPTION_HANDLER   0x1           //!< Install SEH handler.
+#define CR_INST_STRUCTURED_EXCEPTION_HANDLER   0x1    //!< Install SEH handler (deprecated name, use \ref CR_INST_SEH_EXCEPTION_HANDLER instead).
+#define CR_INST_SEH_EXCEPTION_HANDLER          0x1    //!< Install SEH handler.
 #define CR_INST_TERMINATE_HANDLER              0x2    //!< Install terminate handler.
 #define CR_INST_UNEXPECTED_HANDLER             0x4    //!< Install unexpected handler.
 #define CR_INST_PURE_CALL_HANDLER              0x8    //!< Install pure call handler (VS .NET and later).
 #define CR_INST_NEW_OPERATOR_ERROR_HANDLER     0x10   //!< Install new operator error handler (VS .NET and later).
-#define CR_INST_SECURITY_ERROR_HANDLER         0x20   //!< Install security errror handler (VS .NET and later).
+#define CR_INST_SECURITY_ERROR_HANDLER         0x20   //!< Install security error handler (VS .NET and later).
 #define CR_INST_INVALID_PARAMETER_HANDLER      0x40   //!< Install invalid parameter handler (VS 2005 and later).
 #define CR_INST_SIGABRT_HANDLER                0x80   //!< Install SIGABRT signal handler.
 #define CR_INST_SIGFPE_HANDLER                 0x100  //!< Install SIGFPE signal handler.   
@@ -318,12 +314,12 @@
 #define CR_INST_SIGSEGV_HANDLER                0x800  //!< Install SIGSEGV signal handler.
 #define CR_INST_SIGTERM_HANDLER                0x1000 //!< Install SIGTERM signal handler.  
 
-#define CR_INST_ALL_EXCEPTION_HANDLERS 0      //!< Install all possible exception handlers.
-#define CR_INST_CRT_EXCEPTION_HANDLERS 0x1FFE //!< Install exception handlers for the linked CRT module.
+#define CR_INST_ALL_EXCEPTION_HANDLERS         0       //!< Install all possible exception handlers.
+#define CR_INST_CRT_EXCEPTION_HANDLERS         0x1FFE  //!< Install exception handlers for the linked CRT module.
 
-#define CR_INST_NO_GUI                         0x2000 //!< Do not show GUI, send report silently (use for non-GUI apps only).
-#define CR_INST_HTTP_BINARY_ENCODING           0x4000 //!< Use multi-part HTTP uploads with binary attachment encoding.
-#define CR_INST_DONT_SEND_REPORT               0x8000 //!< Don't send error report immediately, just save it locally.
+#define CR_INST_NO_GUI                         0x2000  //!< Do not show GUI, send report silently (use for non-GUI apps only).
+#define CR_INST_HTTP_BINARY_ENCODING           0x4000  //!< Use multi-part HTTP uploads with binary attachment encoding.
+#define CR_INST_DONT_SEND_REPORT               0x8000  //!< Don't send error report immediately, just save it locally.
 #define CR_INST_APP_RESTART                    0x10000 //!< Restart the application on crash.
 #define CR_INST_NO_MINIDUMP                    0x20000 //!< Do not include minidump file to crash report.
 #define CR_INST_SEND_QUEUED_REPORTS            0x40000 //!< CrashRpt should send error reports that are waiting to be delivered.
@@ -335,55 +331,84 @@
  *
  *  \remarks
  *
- *    \a cb should always contain the size of this structure in bytes. 
+ *    \ref CR_INSTALL_INFOW and \ref CR_INSTALL_INFOA structures are wide-character and multi-byte character 
+ *    versions of \ref CR_INSTALL_INFO. \ref CR_INSTALL_INFO typedef defines character set independent mapping.
+ *
+ *    \b cb [in, required] 
+ *
+ *    This must contain the size of this structure in bytes. 
+ *
+ *    \b pszAppName [in, optional] 
+ *
+ *       This is the friendly name of the client application. The application name is
+ *       displayed in the Error Report dialog. If this parameter is NULL, the name of EXE file 
+ *       that was used to start caller process becomes the application name.
  *
- *    \a pszAppName is the friendly name of the client application. The application name is
- *       displayed in Error Report dialog. If this parameter is NULL, the name of EXE file that was used to start caller
- *       process becomes the application name.
+ *    \b pszAppVersion [in, optional] 
  *
- *    \a pszAppVersion should be the application version. Example: "1.0.1". 
- *       If it equals to NULL, product version is extracted from the executable file which started 
- *       the process and this product version is used as application version.
+ *       Should be the application version. Example: "1.0.1". 
+ *
+ *       If this equals to NULL, product version is extracted from the executable file which started 
+ *       the caller process, and this product version is used as application version. If the executable file
+ *       doesn's have a version info resource, the \ref crInstall() function will fail.
  * 
- *    \a pszEmailTo is the email address of the recipient of error reports, for example
+ *    \b pszEmailTo [in, optional] 
+ *
+ *       This is the email address of the recipient of error reports, for example
  *       "name at example.com". If this equals to NULL, the crash report won't be sent using E-mail client.
+ *
  *       Keep this NULL if you plan to use large error reports (more than several MB in size), because
- *       large emails may be rejected by the mail server.
+ *       large emails may be rejected by the mail server. 
+ *
  *       To define a custom port for SMTP connection, use the following address format: "user at example.com:port",
  *       where \a port is the placeholder for the port number. 
  *
- *    \a pszEmailSubject is the subject of the email message. If this parameter is NULL,
+ *    \b pszEmailSubject [in, optional] 
+ *
+ *       This is the subject of the email message. If this parameter is NULL,
  *       the default subject of form '[app_name] [app_version] Error Report' is generated.
  *
- *    \a pszUrl is the URL of a server-side script that would receive crash report data via HTTP
- *       connection. If this parmeter is NULL, HTTP connection won't be used to send crash reports. For
- *       example of a server-side script that can receive crash report, see \ref sending_error_reports.
- *       HTTP transport is the recommended way of sending large error reports (more than several MB in size).
- *       To define a custom port for HTTP connection, use the following URL format: "http://example.com:port/crashrpt.php",
- *       where \a port is the placeholder for the port number.
+ *    \a pszUrl is the URL of a server-side script that would receive crash report data via HTTP or HTTPS 
+ *       connection. If this parmeter is NULL, HTTP(S) connection won't be used to send crash reports. For
+ *       example of a server-side script that can receive crash reports, see \ref sending_error_reports.
+ *
+ *       HTTP(S) transport is the recommended way of sending large error reports (more than several MB in size).
+ *       To define a custom port for HTTP(S) connection, use the following URL format: "http://example.com[:port]/crashrpt.php" or
+ *       "https://example.com[:port]/crashrpt.php", where optional \a port is the placeholder for the port number.
+ *
+ *    \b pszCrashSenderPath [in, optional] 
  *
- *    \a pszCrashSenderPath is the absolute path to the directory where CrashSender.exe is located. 
+ *       This is the absolute path to the directory where CrashSender.exe is located. 
  *       The crash sender process is responsible for letting end user know about the crash and 
- *       sending the error report.
- *       If this is NULL, it is assumed that CrashSender.exe is located in
+ *       sending the error report. If this is NULL, it is assumed that CrashSender.exe is located in
  *       the same directory as CrashRpt.dll.
  *
- *    \a pfnCrashCallback is a pointer to the LPGETLOGFILE() crash callback function. The crash callback function is
- *         called by CrashRpt when crash occurs and allows user to be notified.
- *         If this is NULL, crash callback is not called.
- *
- *    \a uPriorities is an array that defines the preferred ways of sending error reports. 
- *         The available ways are: HTTP connection, SMTP connection or simple MAPI (default mail client).
- *         A priority is a non-negative integer number or special constant \ref CR_NEGATIVE_PRIORITY. The greater positive number defines the greater priority. 
- *         Specify the \ref CR_NEGATIVE_PRIORITY to skip the given way.
- *         The element having index \ref CR_HTTP defines priority for using HTML connection.
- *         The element having index \ref CR_SMTP defines priority for using SMTP connection.
- *         The element having index \ref CR_SMAPI defines priority for using the default mail client.
- *         The ways having greater priority will be tried first. If priorities are equal to each other, HTML
- *         connection will be tried the first, SMTP connection will be tried the second and simple MAPI will be tried
- *         the last. 
+ *    \b pfnCrashCallback [in, optional] 
+ *
+ *       This can be a pointer to the \ref LPGETLOGFILE() crash callback function. The crash callback function is
+ *       called by CrashRpt when crash occurs and allows user to be notified.
+ *       If this is NULL, crash callback function is not called.
+ *
+ *    \b uPriorities [in, optional]
+ *
+ *       This is an array that defines the preferred methods of sending error reports. 
+ *       The available methods are: HTTP (or HTTPS) connection, SMTP connection or simple MAPI (default mail client).
+ *
+ *       A priority is a non-negative integer number or special constant \ref CR_NEGATIVE_PRIORITY. 
+ *       The greater positive number defines the greater priority. 
+ *       Specify the \ref CR_NEGATIVE_PRIORITY to skip the given way.
+ *
+ *       The element having index \ref CR_HTTP defines priority for using HTML connection.
+ *       The element having index \ref CR_SMTP defines priority for using SMTP connection.
+ *       The element having index \ref CR_SMAPI defines priority for using the default mail client.
+ *
+ *       The methods having greater priority will be tried first. If priorities are equal to each other, HTTP (or HTTPS)
+ *       connection will be tried the first, SMTP connection will be tried the second and simple MAPI will be tried
+ *       the last. 
+ *
+ *    \b dwFlags [in, optional]
  *
- *    <b>Since v1.1.2</b> \a dwFlags can be used to define some behavior parameters. This can be a combination of the following values:
+ *    Since v1.1.2, \a dwFlags can be used to define behavior parameters. This can be a combination of the following values:
  *
  *    <table>
  *    <tr><td colspan="2"> <i>Use the combination of the following constants to specify what exception handlers to install:</i>
@@ -396,7 +421,7 @@
  *    <tr><td> \ref CR_INST_SIGABRT_HANDLER            <td> Install SIGABRT signal handler.
  *    <tr><td> \ref CR_INST_SIGINT_HANDLER             <td> Install SIGINT signal handler.  
  *    <tr><td> \ref CR_INST_SIGTERM_HANDLER            <td> Install SIGTERM signal handler.  
- *    <tr><td colspan="2"> <i>Use the combination of the following constant to define behavior parameters:</i>
+ *    <tr><td colspan="2"> <i>Use the combination of the following constants to define behavior parameters:</i>
  *    <tr><td> \ref CR_INST_NO_GUI                
  *        <td> <b>Available since v.1.2.2</b> Do not show GUI.
  * 
@@ -404,7 +429,8 @@
  *             Use this only for services that have no GUI.
  *    <tr><td> \ref CR_INST_HTTP_BINARY_ENCODING     
  *        <td> <b>Available since v.1.2.2</b> This affects the way of sending reports over HTTP. 
- *             By specifying this flag, you enable usage of multi-part HTTP uploads with binary encoding instead of the legacy way (Base64-encoded form data). 
+ *             By specifying this flag, you enable usage of multi-part HTTP uploads with binary encoding instead 
+ *             of the legacy way (Base64-encoded form data). 
  *
  *             It is recommended to always specify this flag, because it is more suitable for large error reports. The legacy way
  *             is supported for backwards compatibility and not recommended to use.
@@ -435,38 +461,63 @@
  *
  *   </table>
  *
- *   <b>Since v1.1.2</b>, \a pszPrivacyPolicyURL defines the URL for the Privacy Policy hyperlink of the 
- *   Error Report dialog. If this parameter is NULL, the link is not displayed. For information on the Privacy Policy, see \ref error_report.
+ *   \b pszPrivacyPolicyURL [in, optional] 
  *
- *   <b>Since v1.2.1</b>, \a pszDebugHelpDLL parameter defines the location of the dbghelp.dll to load. 
- *   If this parameter is NULL, the dbghelp.dll is searched using the default search sequence.
+ *     Since v1.1.2, this defines the URL for the Privacy Policy hyperlink of the 
+ *     Error Report dialog. If this parameter is NULL, the link is not displayed. For information on 
+ *     the Privacy Policy, see \ref error_report.
  *
- *   <b>Since v.1.2.1</b>, \a uMiniDumpType parameter defines the minidump type. For the list of available minidump
- *   types, see the documentation for <b>MiniDumpWriteDump()</b> function in MSDN. It is recommended to set this 
- *   parameter with zero (equivalent of \b MiniDumpNormal constant). Other values may increase the minidump size significantly.
- *   If you plan to use values other than zero, also specify the \ref CR_INST_HTTP_BINARY_ENCODING flag for \a dwFlags parameter.
+ *   \b pszDebugHelpDLL [in, optional] 
+ *  
+ *     Since v1.2.1, this parameter defines the location of the dbghelp.dll to load. 
+ *     If this parameter is NULL, the dbghelp.dll is searched using the default search sequence.
+ *
+ *   \b uMiniDumpType [in, optional] 
+ *
+ *     Since v.1.2.1, this parameter defines the minidump type. For the list of available minidump
+ *     types, see the documentation for the MiniDumpWriteDump() function in MSDN. 
+ 
+ *     It is recommended to set this 
+ *     parameter with zero (equivalent of MiniDumpNormal constant). Other values may increase the minidump size significantly.
+ *     If you plan to use values other than zero, also specify the \ref CR_INST_HTTP_BINARY_ENCODING flag for \a dwFlags parameter.
+ *
+ *   \b pszErrorReportSaveDir [in, optional] 
  *
- *   <b>Since v.1.2.2</b>, \a pszErrorReportSaveDir parameter defines the directory where to save the error reports. 
- *   If this is NULL, the default directory is used (%%LOCAL_APP_DATA%\\CrashRpt\\UnsentCrashReports\\%%AppName%%_%%AppVersion%).
+ *     Since v.1.2.2, this parameter defines the directory where to save the error reports. 
+ *     If this is NULL, the default directory is used (%%LOCAL_APP_DATA%\\CrashRpt\\UnsentCrashReports\\%%AppName%%_%%AppVersion%).
  *
- *   <b> Since v.1.2.4</b>, \a pszRestartCmdLine parameter defines the string that specifies the 
- *   command-line arguments for the application when it is restarted (when using \ref CR_INST_APP_RESTART flag). Do not include the name of 
- *   the executable in the command line; it is added automatically. This parameter can be NULL.
+ *   \b pszRestartCmdLine [in, optional] 
  *
- *   <b> Since v.1.2.4</b>, \a pszLangFilePath parameter defines the absolute path (including file name) for language file.
- *   If this is NULL, the lang file is assumed to be located in the same dir as \b CrashSender.exe file and have the name \b crashrpt_lang.ini.
+ *     Since v.1.2.4, parameter defines the string that specifies the 
+ *     command-line arguments for the application when it is restarted (when using \ref CR_INST_APP_RESTART flag). Do not include the name of 
+ *     the executable in the command line; it is added automatically. This parameter can be NULL.
+ *
+ *   \b pszLangFilePath [in, optional]
+ *
+ *     Since v.1.2.4, this parameter defines the absolute path (including file name) for language file.
+ *     If this is NULL, the lang file is assumed to be located in the same dir as CrashSender.exe file and have the name crashrpt_lang.ini.
  * 
- *   <b> Since v.1.2.4</b>, \a pszEmailText parameter defines the custom E-mail text that is used when deliverying error report
- *   as E-mail. If this is NULL, the default E-mail text is used. It is recommended to set this parameter with NULL.
+ *   \b pszEmailText [in, optional]
+ *
+ *     Since v.1.2.4, this parameter defines the custom E-mail text that is used when deliverying error report
+ *     as E-mail. If this is NULL, the default E-mail text is used. It is recommended to set this parameter with NULL.
  *  
- *   <b> Since v.1.2.4</b>, \a pszSmtpProxy parameter defines the network address and port formatted as "IP:port" to use as SMTP proxy. Example: "192.168.1.1:2525".
- *   If this is NULL, the SMTP server address is resolved using the MX record of sender's or recipient's mailbox. You should typically set this parameter with NULL, except in the
- *   case when your software is a server and custom SMTP configuration is required.
+ *   \b pszSmtpProxy [in, optional] 
+ *
+ *     Since v.1.2.4, this parameter defines the network address and port formatted as "IP:port" to use as SMTP proxy. Example: "192.168.1.1:2525".
+ *     If this is NULL, the SMTP server address is resolved using the MX record of sender's or recipient's mailbox. You should typically set this parameter with NULL, except in the
+ *     case when your software is a server and custom SMTP configuration is required.
  *  
- *  \note
+ *   \b pszCustomSenderIcon [in, optional] 
  *
- *    \ref CR_INSTALL_INFOW and \ref CR_INSTALL_INFOA structures are wide-character and multi-byte character 
- *    versions of \ref CR_INSTALL_INFO. \ref CR_INSTALL_INFO typedef defines character set independent mapping.
+ *   Since v.1.2.8, this parameter can be used to define a custom icon for <i>Error Report</i> dialog. 
+ *   The value of this parameter should be absolute address to the image containing the icon resource, followed by resource identifier separated by comma.
+ *   You can set this parameter with NULL to use the default icon.
+ *
+ *   The resource identifier is a zero-based index of the icon to retrieve. For example, if this value is 0, the first icon in the specified file is used.
+ *   If the identifier is a negative number not equal to -1, the icon in the specified file whose resource identifier is equal to the absolute value of the resource identifier is used.
+ *   Example: "D:\MyApp\Resources.dll, -128". 
+ *  
  *        
  */
 
@@ -490,6 +541,7 @@
   LPCWSTR pszLangFilePath;        //!< Path to the language file (including file name).
   LPCWSTR pszEmailText;           //!< Custom E-mail text (used when deliverying report as E-mail).
   LPCWSTR pszSmtpProxy;           //!< Network address and port to be used as SMTP proxy.
+  LPCWSTR pszCustomSenderIcon;    //!< Custom icon used for Error Report dialog.
 }
 CR_INSTALL_INFOW;
 
@@ -520,6 +572,7 @@
   LPCSTR pszLangFilePath;        //!< Path to the language file (including file name).
   LPCSTR pszEmailText;           //!< Custom E-mail text (used when deliverying report as E-mail).
   LPCSTR pszSmtpProxy;           //!< Network address and port to be used as SMTP proxy.
+  LPCSTR pszCustomSenderIcon;    //!< Custom icon used for Error Report dialog.
 }
 CR_INSTALL_INFOA;
 
@@ -537,12 +590,12 @@
 #endif // UNICODE
 
 /*! \ingroup CrashRptAPI 
- *  \brief  Installs exception handlers for all threads of the caller process.
+ *  \brief  Installs exception handlers for the caller process.
  *
  *  \param[in] pInfo General information.
  *
  *  \remarks
- *    This function installs unhandled exception filter for all threads of the caller process.
+ *    This function installs unhandled exception filter for the caller process.
  *    It also installs various CRT exception/error handlers that function for all threads of the caller process.
  *    For more information, see \ref exception_handling
  *
@@ -562,11 +615,11 @@
  *    The \a pInfo parameter contains all required information needed to install CrashRpt.
  *
  *    This function fails when \a pInfo->pszCrashSenderPath doesn't contain valid path to CrashSender.exe
- *    or when \a pInfo->pszCrashSenderPath is equal to NULL, but CrashSender.exe is not located in the
- *    directory where CrashRpt.dll located.
+ *    or when \a pInfo->pszCrashSenderPath is equal to NULL, but \b CrashSender.exe is not located in the
+ *    directory where \b CrashRpt.dll located.
  *
- *    On crash, the crash minidump file is created, which contains CPU and 
- *    stack state information. Also XML file is created that contains additional 
+ *    On crash, the crash minidump file is created, which contains CPU information and 
+ *    stack trace information. Also XML file is created that contains additional 
  *    information that may be helpful for crash analysis. These files along with several additional
  *    files added with crAddFile2() are packed to a single ZIP file.
  *
@@ -576,8 +629,7 @@
  * 
  *    The error report can be sent over E-mail using address and subject passed to the
  *    function as \ref CR_INSTALL_INFO structure members. Another way of sending error report is an HTTP 
- *    request using \a pszUrl member of \ref CR_INSTALL_INFO. If both the E-mail address and
- *    URL are not specified, this function fails.
+ *    request using \a pszUrl member of \ref CR_INSTALL_INFO. 
  *
  *    This function may fail if an appropriate language file (\b crashrpt_lang.ini) is not found 
  *    in the directory where the \b CrashSender.exe file is located.
@@ -629,8 +681,8 @@
  *    handlers previously installed with crInstall(). After function call, the exception handlers
  *    are restored to states they had before calling crInstall().
  *
- *    This function fails if crInstall() wasn't previously called in context of
- *    current process.
+ *    This function fails if crInstall() wasn't previously called in context of the
+ *    caller process.
  *
  *    When this function fails, use crGetLastErrorMsg() to retrieve the error message.
  *
@@ -669,34 +721,10 @@
  *   Call crUninstallFromCurrentThread() to uninstall C++ exception handlers from
  *   current thread.
  *
- *   The crInstallToCurrentThread2() function gives better control of what exception 
- *   handlers to install. 
- *
- *   The following example shows how to use crInstallToCurrentThread() and crUninstallFromCurrentThread().
- *
- *   \code
- *
- *   DWORD WINAPI ThreadProc(LPVOID lpParam)
- *   {
- *     // Install exception handlers
- *     crInstallToCurrentThread();
- *
- *     // Your code...
- *
- *     // Uninstall exception handlers
- *     crUninstallFromCurrentThread();
- *    
- *     return 0;
- *   }
- *
- *   // .. Create a thread
- *   DWORD dwThreadId = 0;
- *   HANDLE hWorkingThread = CreateThread(NULL, 0, 
- *            ThreadProc, (LPVOID)NULL, 0, &dwThreadId);
- *
- *   \endcode
+ *   This function is deprecatd. The crInstallToCurrentThread2() function gives 
+ *   better control of what exception handlers to install. 
  *
- *   \sa crInstallToCurrentThread(), crInstallToCurrentThread2(),
+ *   \sa crInstallToCurrentThread2(),
  *       crUninstallFromCurrentThread(), CrThreadAutoInstallHelper
  */
 
@@ -716,12 +744,11 @@
  *  several execution threads, you ought to call the function for each thread,
  *  except the main one.
  *   
- *  The function works the same way as crInstallToCurrentThread(), but provides
+ *  The function works the same way as obsolete crInstallToCurrentThread(), but provides
  *  an ability to select what exception handlers to install.
  *
  *  \a dwFlags defines what exception handlers to install. Use zero value
- *  to install all possible exception
- *  handlers. Or use a combination of the following constants:
+ *  to install all possible exception handlers. Or use a combination of the following constants:
  *
  *      - \ref CR_INST_TERMINATE_HANDLER              Install terminate handler
  *      - \ref CR_INST_UNEXPECTED_HANDLER             Install unexpected handler
@@ -759,14 +786,13 @@
  *  
  *  \remarks
  *
- *    This function unsets C++ exception handlers for the caller thread. If you have
+ *    This function unsets exception handlers from the caller thread. If you have
  *    several execution threads, you ought to call the function for each thread.
  *    After calling this function, the exception handlers for current thread are
- *    replaced with the handlers that were before call of crInstallToCurrentThread2() 
- *    (or crInstallToCurrentThread()).
+ *    replaced with the handlers that were before call of crInstallToCurrentThread2().
+ *
+ *    This function fails if crInstallToCurrentThread2() wasn't called for current thread.
  *
- *    This function fails if crInstallToCurrentThread() (or crInstallToCurrentThread2())
- *    wasn't called for current thread.
  *    When this function fails, use crGetLastErrorMsg() to retrieve the error message.
  *
  *    No need to call this function for the main execution thread. The crUninstall()
@@ -788,22 +814,22 @@
  *  \param[in] pszDesc File description (used in Error Report Details dialog).
  *
  *  \note
- *    This function is deprecated. It is recommended to use crAddFile2() function instead.
+ *    This function is deprecated and will be removed in one of the future releases. It is recommended to use crAddFile2() function instead.
  *
  *    This function can be called anytime after crInstall() to add one or more
  *    files to the generated crash report. 
  * 
  *    When this function is called, the file is marked to be added to the error report, 
  *    then the function returns control to the caller.
- *    When crash occurs, all marked files are added to the report. If a file is locked by someone 
- *    for exclusive access, the file won't be included. In \ref LPGETLOGFILE crash callback, 
- *    ensure files to be included are not locked.
+ *    When crash occurs, all marked files are added to the report by the \b CrashSender.exe process. 
+ *    If a file is locked by someone for exclusive access, the file won't be included. Inside of \ref LPGETLOGFILE crash callback, 
+ *    ensure files to be included are acessible for reading.
  *  
  *    \a pszFile should be a valid absolute path of a file to add to crash report. 
  *
  *    \a pszDesc is a description of a file. It can be NULL.
  *
- *    Function fails if \a pszFile doesn't exist at the moment of function call. 
+ *    This function fails if \a pszFile doesn't exist at the moment of function call. 
  * 
  *    The crAddFileW() and crAddFileA() are wide-character and multibyte-character
  *    versions of crAddFile() function. The crAddFile() macro defines character set
@@ -851,21 +877,21 @@
  * 
  *  \return This function returns zero if succeeded.
  *
- *  \param[in] pszFile Absolute path to the file to add.
- *  \param[in] pszDestFile Destination file name.
- *  \param[in] pszDesc File description (used in Error Report Details dialog).
- *  \param[in] dwFlags Flags.
+ *  \param[in] pszFile     Absolute path to the file to add, required.
+ *  \param[in] pszDestFile Destination file name, optional.
+ *  \param[in] pszDesc     File description (used in Error Report Details dialog), optional.
+ *  \param[in] dwFlags     Flags, optional.
  *
  *    This function can be called anytime after crInstall() to add one or more
  *    files to the generated crash report. 
  *  
  *    When this function is called, the file is marked to be added to the error report, 
  *    then the function returns control to the caller.
- *    When crash occurs, all marked files are added to the report. 
+ *    When crash occurs, all marked files are added to the report by the \b CrashSender.exe process. 
+ *    If a file is locked by someone for exclusive access, the file won't be included. Inside of \ref LPGETLOGFILE crash callback, 
+ *    close open file handles and ensure files to be included are acessible for reading.
  *
- *    \a pszFile should be a valid absolute path of a file to add to crash report. It
- *    is recommended to add small files (several KB in size). If a large file is added,
- *    the crash report sending procedure may fail.
+ *    \a pszFile should be a valid absolute path of a file to add to crash report. 
  *
  *    \a pszDestFile should be the name of destination file. This parameter can be used
  *    to specify different file name for the file in ZIP archive. If this parameter is NULL, the pszFile
@@ -874,16 +900,19 @@
  *    \a pszDesc is a literal description of a file. It can be NULL.
  *
  *    \a dwFlags parameter defines the behavior of the function. This can be a combination of the following flags:
- *       - \ref CR_AF_TAKE_ORIGINAL_FILE  On crash, the CrashSender.exe will try to locate the file from its original location. This behavior is the default one.
- *       - \ref CR_AF_MAKE_FILE_COPY      On crash, the CrashSender.exe will make a copy of the file and save it to the error report folder.  
+ *       - \ref CR_AF_TAKE_ORIGINAL_FILE  On crash, the \b CrashSender.exe will try to locate the file from its original location. This behavior is the default one.
+ *       - \ref CR_AF_MAKE_FILE_COPY      On crash, the \b CrashSender.exe will make a copy of the file and save it to the error report folder.  
  *
  *       - \ref CR_AF_FILE_MUST_EXIST     The function will fail if file doesn't exist at the moment of function call (the default behavior). 
  *       - \ref CR_AF_MISSING_FILE_OK     Do not fail if file is missing (assume it will be created later).
  *
- *    If your file is not huge, specify the \ref CR_AF_MAKE_FILE_COPY as \a dwFlags parameter value. This will
+ *    If you do not use error report delivery (\ref CR_INST_DONT_SEND_REPORT flag) or if you use postponed error report delivery 
+ *    (if you specify \ref CR_INST_SEND_QUEUED_REPORTS flag) 
+ *    you must also specify the \ref CR_AF_MAKE_FILE_COPY as \a dwFlags parameter value. This will
  *    guarantee that a snapshot of your file at the moment of crash is taken and saved to the error report folder.
  *
- *    This function fails if \a pszFile doesn't exist at the moment of function call, unless you specify \ref CR_AF_MISSING_FILE_OK flag. 
+ *    This function fails if \a pszFile doesn't exist at the moment of function call, 
+ *    unless you specify \ref CR_AF_MISSING_FILE_OK flag. 
  * 
  *    The crAddFile2W() and crAddFile2A() are wide-character and multibyte-character
  *    versions of crAddFile2() function. The crAddFile2() macro defines character set
@@ -925,32 +954,55 @@
 
 
 // Flags for crAddScreenshot function.
-#define CR_AS_VIRTUAL_SCREEN  0 //!< Take a screenshot of the virtual screen.
-#define CR_AS_MAIN_WINDOW     1 //!< Take a screenshot of application main window.
+#define CR_AS_VIRTUAL_SCREEN  0  //!< Take a screenshot of the virtual screen.
+#define CR_AS_MAIN_WINDOW     1  //!< Take a screenshot of application's main window.
+#define CR_AS_PROCESS_WINDOWS 2  //!< Take a screenshot of all visible process windows.
+#define CR_AS_GRAYSCALE_IMAGE 4  //!< Make a grayscale image instead of a full-color one.
+#define CR_AS_USE_JPEG_FORMAT 8  //!< Store screenshots as JPG files.
 
 /*! \ingroup CrashRptAPI  
  *  \brief Adds a screenshot to the crash report.
  * 
- *  \return This function returns zero if succeeded.
+ *  \return This function returns zero if succeeded. Use crGetLastErrorMsg() to retrieve the error message on fail.
  *
- *  \param[in] dwFlags Flags.
+ *  \param[in] dwFlags Flags, optional.
  *  
  *  \remarks 
  *
- *  This function can be used to make a screenshot at the moment of crash and add
- *  the screenshot to the error report. Call this function inside of \ref LPGETLOGFILE crash callback.
+ *  This function can be used to take a screenshot at the moment of crash and add it to the error report. 
+ *  Screenshot information may help the developer to better understand the state of the application
+ *  at the moment of crash and reproduce the error.
+ *
+ *  When this function is called, screenshot flags are saved, 
+ *  then the function returns control to the caller.
+ *  When crash occurs, screenshot is made by the \b CrashSender.exe process and added to the report. 
  * 
- *  \a dwFlags can be one of the following:
- *    - \ref CR_AS_VIRTUAL_SCREEN Use this to take a screenshot of the desktop (virtual screen).
- *    - \ref CR_AS_MAIN_WINDOW    Use this to take a screenshot of the application's main window.
- *  
- *  Screenshots are added in form of PNG files. When capturing entire desktop consisting of several monitors, 
- *  one screenshot file is added per each monitor.
- *
- *  You should be carefull when using this feature, because screenshots may contain user-identifying 
- *  or private information. Always specify the purposes you will use the collected 
- *  information for in your Privacy Policy. Typically, the screenshot is not a required information to 
- *  debug the crash, however sometimes it may be useful.
+ *  \b dwFlags 
+ *
+ *    Use one of the following constants to specify what part of virtual screen to capture:
+ *    - \ref CR_AS_VIRTUAL_SCREEN  Use this to take a screenshot of the whole desktop (virtual screen).
+ *    - \ref CR_AS_MAIN_WINDOW     Use this to take a screenshot of the application's main window.
+ *    - \ref CR_AS_PROCESS_WINDOWS Use this to take a screenshot of all visible windows that belong to the process.
+ *
+ *  The main application window is a window that has a caption (\b WS_CAPTION), system menu (\b WS_SYSMENU) and
+ *  the \b WS_EX_APPWINDOW extended style. If CrashRpt doesn't find such window, it considers the first found process window as
+ *  the main window.
+ *
+ *  Screenshots are added in form of PNG files by default. You can specify the \ref CR_AS_USE_JPEG_FORMAT flag to save
+ *  screenshots as JPEG files instead. 
+ *
+ *  In addition, you can specify the \ref CR_AS_GRAYSCALE_IMAGE flag to make a grayscale screenshot 
+ *  (by default color image is made). Grayscale image gives smaller file size.
+ *
+ *  If you use JPEG image format, you may better use the \ref crAddScreenshot2() function, that allows to
+ *  define JPEG image quality. 
+ *
+ *  When capturing entire desktop consisting of several monitors, 
+ *  one screenshot file is added per each monitor. 
+ *
+ *  You should be careful when using this feature, because screenshots may contain user-identifying 
+ *  or private information. Always specify purposes you will use collected 
+ *  information for in your Privacy Policy. 
  *
  *  \sa
  *   crAddFile2()
@@ -962,12 +1014,67 @@
    );
 
 /*! \ingroup CrashRptAPI  
- *  \brief Adds a string property to the crash report.
+ *  \brief Adds a screenshot to the crash report.
  * 
- *  \return This function returns zero if succeeded.
+ *  \return This function returns zero if succeeded. Use crGetLastErrorMsg() to retrieve the error message on fail.
  *
- *  \param[in] pszPropName   Name of the property.
- *  \param[in] pszPropValue  Value of the property.
+ *  \param[in] dwFlags Flags, optional.
+ *  \param[in] nJpegQuality Defines the JPEG image quality, optional.
+ *  
+ *  \remarks 
+ * 
+ *  This function can be used to take a screenshot at the moment of crash and add it to the error report. 
+ *  Screenshot information may help the developer to better understand state of the application
+ *  at the moment of crash and reproduce the error.
+ *
+ *  When this function is called, screenshot flags are saved, then the function returns control to the caller.
+ *  When crash occurs, screenshot is made by the \b CrashSender.exe process and added to the report. 
+ * 
+ *  \b dwFlags 
+ *
+ *    Use one of the following constants to specify what part of virtual screen to capture:
+ *    - \ref CR_AS_VIRTUAL_SCREEN  Use this to take a screenshot of the whole desktop (virtual screen).
+ *    - \ref CR_AS_MAIN_WINDOW     Use this to take a screenshot of the main application main window.
+ *    - \ref CR_AS_PROCESS_WINDOWS Use this to take a screenshot of all visible windows that belong to the process.
+ * 
+ *  The main application window is a window that has a caption (\b WS_CAPTION), system menu (\b WS_SYSMENU) and
+ *  the \b WS_EX_APPWINDOW extended style. If CrashRpt doesn't find such window, it considers the first found process window as
+ *  the main window.
+ *
+ *  Screenshots are added in form of PNG files by default. You can specify the \ref CR_AS_USE_JPEG_FORMAT flag to save
+ *  screenshots as JPEG files instead. 
+ *
+ *  If you use JPEG format, you can use the \a nJpegQuality parameter to define the JPEG image quality. 
+ *  This should be the number between 0 and 100, inclusively. The bigger the number, the better the quality and the bigger the JPEG file size. 
+ *  If you use PNG file format, this parameter is ignored.
+ *
+ *  In addition, you can specify the \ref CR_AS_GRAYSCALE_IMAGE flag to make a grayscale screenshot 
+ *  (by default color image is made). Grayscale image gives smaller file size.
+ *
+ *  When capturing entire desktop consisting of several monitors, 
+ *  one screenshot file is added per each monitor. 
+ *
+ *  You should be careful when using this feature, because screenshots may contain user-identifying 
+ *  or private information. Always specify purposes you will use collected 
+ *  information for in your Privacy Policy. 
+ *
+ *  \sa
+ *   crAddFile2()
+ */
+
+CRASHRPTAPI(int)
+crAddScreenshot2(
+   DWORD dwFlags,
+   int nJpegQuality
+   );
+
+/*! \ingroup CrashRptAPI  
+ *  \brief Adds a string property to the crash report. 
+ * 
+ *  \return This function returns zero if succeeded. Use crGetLastErrorMsg() to retrieve the error message on fail.
+ *
+ *  \param[in] pszPropName   Name of the property, required.
+ *  \param[in] pszPropValue  Value of the property, required.
  *  
  *  \remarks 
  *
@@ -1016,28 +1123,32 @@
 /*! \ingroup CrashRptAPI  
  *  \brief Adds a registry key dump to the crash report.
  * 
- *  \return This function returns zero if succeeded.
+ *  \return This function returns zero if succeeded. Use crGetLastErrorMsg() to retrieve the error message on fail.
  *
  *  \param[in] pszRegKey        Registry key to dump, required.
  *  \param[in] pszDstFileName   Name of the destination file, required. 
- *  \param[in] dwFlags          Flags.
+ *  \param[in] dwFlags          Flags, reserved.
  *  
  *  \remarks 
  *
  *  Use this function to add a dump of a Windows registry key into the crash report. This function
  *  is available since v.1.2.6.
  *
- *  The \a pszRegKey parameter must be the name of the registry key. 
- *  The content of the key specified by the \a pszRegKey parameter will be stored in human-readable XML
- *  format and included into the error report as \a pszDstFileName file. 
+ *  The \a pszRegKey parameter must be the name of the registry key. The key name should begin with "HKEY_CURRENT_USER"
+ *  or "HKEY_LOCAL_MACHINE". Other root keys are not supported.
+ *
+ *  The content of the key specified by the \a pszRegKey parameter will be stored in a human-readable XML
+ *  format and included into the error report as \a pszDstFileName destination file. You can dump multiple registry keys
+ *  to the same destination file.
  *
  *  The \a dwFlags parameter is reserved for future use and should be set to zero.
  *
- *  The following example shows how to dump two registry keys to regkey.xml file:
+ *  The following example shows how to dump two registry keys to \b regkey.xml file:
+ *
  *  \code
  *  
- *  crAddRegKey(_T("HKEY_CURRENT_USER\\Software\\MyApp"), _T("regkey.xml"));
- *  crAddRegKey(_T("HKEY_LOCAL_MACHINE\\Software\\MyApp"), _T("regkey.xml"));
+ *  crAddRegKey(_T("HKEY_CURRENT_USER\\Software\\MyApp"), _T("regkey.xml"), 0);
+ *  crAddRegKey(_T("HKEY_LOCAL_MACHINE\\Software\\MyApp"), _T("regkey.xml"), 0);
  *
  *  \endcode
  *
@@ -1072,7 +1183,6 @@
 #define crAddRegKey crAddRegKeyA
 #endif //UNICODE
 
-
 // Exception types
 #define CR_WIN32_STRUCTURED_EXCEPTION   0    //!< SEH exception (deprecated name, use \ref CR_SEH_EXCEPTION instead).
 #define CR_SEH_EXCEPTION                0    //!< SEH exception.
@@ -1091,48 +1201,66 @@
 
 
 /*! \ingroup CrashRptStructs
- *  \brief Extended exception info used by crGenerateErrorReport().
+ *  
+ *  This structure defines the information needed to generate crash minidump file and
+ *  provide the developer with other information about the error. This structure is used by
+ *  the crGenerateErrorReport() function.
  *
- *  \remarks
+ *  \b cb [in] 
  *
- *  This structure contains essential information needed to generate crash minidump file and
- *  provide the developer with other information about the error.
+ *  This must contain the size of this structure in bytes.
  *
- *  \a cb must contain the size of this structure in bytes.
+ *  \b pexcptrs [in, optional]
  *
- *  \a pexcptrs should contain the exception pointers. If this parameter is NULL, 
- *     the current CPU state is used to generate exception pointers.
+ *    Should contain the exception pointers. If this parameter is NULL, 
+ *    the current CPU state is used to generate exception pointers.
  *
- *  \a exctype is the type of exception. This value can be used for crash report classification on developers' side. 
- *  This parameter may be one of the following:
+ *  \b exctype [in]
+ *  
+ *    The type of exception. This parameter may be one of the following:
  *     - \ref CR_SEH_EXCEPTION             SEH (Structured Exception Handling) exception
  *     - \ref CR_CPP_TERMINATE_CALL        C++ terminate() function call
  *     - \ref CR_CPP_UNEXPECTED_CALL       C++ unexpected() function call
- *     - \ref CR_CPP_PURE_CALL Pure virtual method call (Visual Studio .NET 2003 and later) 
- *     - \ref CR_CPP_NEW_OPERATOR_ERROR C++ 'new' operator error (Visual Studio .NET 2003 and later)
- *     - \ref CR_CPP_SECURITY_ERROR Buffer overrun (Visual Studio .NET 2003 only) 
- *     - \ref CR_CPP_INVALID_PARAMETER Invalid parameter error (Visual Studio 2005 and later) 
- *     - \ref CR_CPP_SIGABRT C++ SIGABRT signal 
- *     - \ref CR_CPP_SIGFPE  C++ floating point exception
- *     - \ref CR_CPP_SIGILL  C++ illegal instruction
- *     - \ref CR_CPP_SIGINT  C++ SIGINT signal
- *     - \ref CR_CPP_SIGSEGV C++ invalid storage access
- *     - \ref CR_CPP_SIGTERM C++ termination request
- * 
- *   \a code is used if \a exctype is \ref CR_SEH_EXCEPTION and represents the SEH exception code. 
- *   If \a pexptrs is NULL, this value is used when generating exception information for initializing
- *   \c pexptrs->ExceptionRecord->ExceptionCode member, otherwise it is ignored.
- *
- *   \a fpe_subcode is used if \a exctype is equal to \ref CR_CPP_SIGFPE. It defines the floating point
- *   exception subcode (see \c signal() function ducumentation in MSDN).
- * 
- *   \a expression, \a function, \a file and \a line are used when \a exctype is \ref CR_CPP_INVALID_PARAMETER.
- *   These members are typically non-zero when using debug version of CRT.
- *
- *   <b>Since v.1.2.4</b>, \a bManual parameter should be equal to TRUE if the report is generated manually. 
- *   The value of \a bManual parameter affects the automatic application restart behavior. If the application
- *   restart is requested by the \ref CR_INST_APP_RESTART flag of CR_INSTALL_INFO::dwFlags structure member, and if \a bManual is FALSE, the application will be
- *   restarted after error report generation. If \a bManual is TRUE, the application won't be restarted.
+ *     - \ref CR_CPP_PURE_CALL             Pure virtual method call (Visual Studio .NET 2003 and later) 
+ *     - \ref CR_CPP_NEW_OPERATOR_ERROR    C++ 'new' operator error (Visual Studio .NET 2003 and later)
+ *     - \ref CR_CPP_SECURITY_ERROR        Buffer overrun (Visual Studio .NET 2003 only) 
+ *     - \ref CR_CPP_INVALID_PARAMETER     Invalid parameter error (Visual Studio 2005 and later) 
+ *     - \ref CR_CPP_SIGABRT               C++ SIGABRT signal 
+ *     - \ref CR_CPP_SIGFPE                C++ floating point exception
+ *     - \ref CR_CPP_SIGILL                C++ illegal instruction
+ *     - \ref CR_CPP_SIGINT                C++ SIGINT signal
+ *     - \ref CR_CPP_SIGSEGV               C++ invalid storage access
+ *     - \ref CR_CPP_SIGTERM               C++ termination request
+ * 
+ *   \b code [in, optional]
+ *
+ *      Used if \a exctype is \ref CR_SEH_EXCEPTION and represents the SEH exception code. 
+ *      If \a pexptrs is NULL, this value is used when generating exception information for initializing
+ *      \c pexptrs->ExceptionRecord->ExceptionCode member, otherwise it is ignored.
+ *
+ *   \b fpe_subcode [in, optional]
+ *
+ *      Used if \a exctype is equal to \ref CR_CPP_SIGFPE. It defines the floating point
+ *      exception subcode (see \c signal() function ducumentation in MSDN).
+ * 
+ *   \b expression, \b function, \b file and \b line [in, optional]
+ *
+ *     These parameters are used when \a exctype is \ref CR_CPP_INVALID_PARAMETER. 
+ *     These members are typically non-zero when using debug version of CRT.
+ *
+ *  \b bManual [in]
+ *
+ *     Since v.1.2.4, \a bManual parameter should be equal to TRUE if the report is generated manually. 
+ *     The value of \a bManual parameter affects the automatic application restart behavior. If the application
+ *     restart is requested by the \ref CR_INST_APP_RESTART flag of CR_INSTALL_INFO::dwFlags structure member, 
+ *     and if \a bManual is FALSE, the application will be
+ *     restarted after error report generation. If \a bManual is TRUE, the application won't be restarted.
+ *
+ *  \b hSenderProcess [out]
+ *
+ *     As of v.1.2.8, \a hSenderProcess parameter will contain the handle to the <b>CrashSender.exe</b> process when 
+ *     \ref crGenerateErrorReport function returns. The caller may use this handle to wait until <b>CrashSender.exe</b> 
+ *     process exits and check the exit code.
  */
 
 typedef struct tagCR_EXCEPTION_INFO
@@ -1147,6 +1275,7 @@
   const wchar_t* file;       //!< File in which assertion happened.
   unsigned int line;         //!< Line number.
   BOOL bManual;              //!< Flag telling if the error report is generated manually or not.
+  HANDLE hSenderProcess;     //!< Handle to the CrashSender.exe process.
 }
 CR_EXCEPTION_INFO;
 
@@ -1202,7 +1331,7 @@
    );
 
 
-/*! \ingroup CrashRptAPI 
+/*! \ingroup DeprecatedAPI 
  *  \brief Can be used as a SEH exception filter.
  *
  *  \return This function returns \c EXCEPTION_EXECUTE_HANDLER if succeeds, else \c EXCEPTION_CONTINUE_SEARCH.
@@ -1211,7 +1340,9 @@
  *  \param[in] ep   Exception pointers.
  *
  *  \remarks
- *     
+ *
+ *     As of v.1.2.8, this function is declared deprecated. It may be removed in one of the future releases.
+ *
  *     This function can be called instead of a SEH exception filter
  *     inside of __try{}__except(Expression){} statement. The function generates a error report
  *     and returns control to the exception handler block.
@@ -1417,13 +1548,13 @@
 public:
 
   //! Installs exception handlers to the caller process
-  CrAutoInstallHelper(PCR_INSTALL_INFOA pInfo)
+  CrAutoInstallHelper(__in PCR_INSTALL_INFOA pInfo)
   {
     m_nInstallStatus = crInstallA(pInfo);
   }
 
   //! Installs exception handlers to the caller process
-  CrAutoInstallHelper(PCR_INSTALL_INFOW pInfo)
+  CrAutoInstallHelper(__in PCR_INSTALL_INFOW pInfo)
   {
     m_nInstallStatus = crInstallW(pInfo);
   }

Modified: trunk/GME/Lib/CrashRpt/lib/CrashRpt.lib
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/CrashRpt/lib/x64/CrashRpt.lib
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/lib/x64/CrashRpt.lib	Wed Oct 12 12:46:14 2011	(r1608) differ

Added: trunk/GME/Lib/CrashRpt/lib/x64/CrashRptd.lib
==============================================================================
Binary files /dev/null	00:00:00 1970	(empty, because file is newly added) and trunk/GME/Lib/CrashRpt/lib/x64/CrashRptd.lib	Wed Oct 12 12:46:14 2011	(r1608) differ


More information about the gme-commit mailing list