Compartilhar via


Usar a API de recuperação de falhas MAPI

Aplica-se a: Outlook 2013 | Outlook 2016

Este tópico contém um exemplo de código no C++ que mostra como chamar a função MAPICrashRecovery da função UnhandledExceptionFilter . A função MAPICrashRecovery verifica o estado da memória compartilhada do arquivo PST (Pastas Pessoais) ou do arquivo OST (Pastas Offline).

Se a memória estiver em um estado consistente, a função MAPICrashRecovery moverá os dados para o disco e impedirá o acesso de leitura ou gravação até que o processo seja encerrado. Ao garantir que os PSTs ou OSTs estejam em um estado consistente antes do término do processo, você pode impedir que Microsoft Outlook 2010 ou Microsoft Outlook 2013 exiba a seguinte mensagem de erro e evite problemas de desempenho:

Um arquivo de dados não fechou corretamente na última vez em que foi usado e está sendo verificado se há problemas. O desempenho pode ser afetado enquanto o marcar está em andamento.

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

Confira também