MAPI クラッシュ回復 API を使用する
適用対象: Outlook 2013 | Outlook 2016
このトピックには、UnhandledExceptionFilter 関数から MAPICrashRecovery 関数を呼び出す方法を示す C++ のコード サンプルが含まれています。 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;
}