Export (0) Print
Expand All
Expand Minimize

How to: Use the MAPI Crash Recovery API

Office 2007

This topic contains a code sample in C++ that shows how to call the MAPICrashRecovery function from the UnhandledExceptionFilter function. The MAPICrashRecovery function checks the state of the Personal Folders file (PST) or Offline Folders file (OST) shared memory. If the memory is in a consistent state, the MAPICrashRecovery function moves the data to disk and prevents further read or write access until the process is terminated. By ensuring that the PSTs or OSTs are in a consistent state before the process is terminated, you can prevent Microsoft Office Outlook 2007 from displaying the following error message and avoid performance problems.

A data file did not close properly the last time it was used and is being checked for problems. Performance might be affected while the check is in progress.

LONG WINAPI UnhandledExceptionFilter(__in EXCEPTION_POINTERS* pep)
{
    // Let the OS terminate the process upon return.
    LONG retval = EXCEPTION_EXECUTE_HANDLER;

    switch (pep->ExceptionRecord->ExceptionCode)
    {
        case EXCEPTION_BREAKPOINT:
        case EXCEPTION_SINGLE_STEP:
            // Ignore debugging exceptions.
            retval = EXCEPTION_CONTINUE_SEARCH;
            break;

        default:
            // The process is going to be terminated, so disconnect the MAPI database.
            MAPICrashRecovery(MAPICRASH_RECOVER);
            // Optionally, you can display a crash reporting dialog box here.
            // If the user chooses to debug, 
            // call MAPICrashRecovery(MAPICRASH_CONTINUE).
            break;
    }

    return retval;
}

See Also

About the MAPI Crash Recovery API
Constants for Exported Outlook APIs
MAPICrashRecovery


Community Additions

ADD
Show:
© 2014 Microsoft