Использование 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;
}