Поделиться через


Использование API аварийного восстановления MAPI

Область применения: Outlook 2013 | Outlook 2016

В этом разделе содержится пример кода на C++, в котором показано, как вызвать функцию MAPICrashRecovery из функции UnhandledExceptionFilter . Функция MAPICrashRecovery проверяет состояние общей памяти файла личных папок (PST) или файла автономных папок (OST).

Если память находится в согласованном состоянии, функция MAPICrashRecovery перемещает данные на диск и предотвращает дальнейший доступ на чтение или запись до завершения процесса. Убедив, что pst или OST находятся в согласованном состоянии перед завершением процесса, вы можете предотвратить отображение Microsoft Outlook 2010, русская версия или Microsoft Outlook 2013 следующего сообщения об ошибке и избежать проблем с производительностью:

Файл данных не закрывался должным образом при последнем использовании и проверяется на наличие проблем. Производительность может быть затронута во время выполнения проверка.

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; 
}

См. также