Compartilhar via


MAPI estendido erros

Aplica-se a: Outlook 2013 | Outlook 2016

Os implementadores de métodos de interface podem optar por simplesmente retornar o êxito (S_OK) e a falha (MAPI_E_CALL_FAILED) ou diferenciar entre as condições de erro, retornando tantos valores de erro quanto faz sentido para a situação. A maioria das situações pode usar um dos valores de erro definidos pelo MAPI no MAPICODE. Arquivo de cabeçalho H. No entanto, para situações que não são cobertas por um valor predefinido, o valor MAPI_E_EXTENDED_ERROR pode ser usado. MAPI_E_EXTENDED_ERROR indica ao chamador que mais informações sobre o erro estão disponíveis. O chamador recupera as informações adicionais chamando o método GetLastError no mesmo objeto que retornou MAPI_E_EXTENDED_ERROR.

GetLastError can be called to retrieve information about any error code, not only MAPI_E_EXTENDED_ERROR. Many MAPI objects implement interfaces that include the GetLastError method. GetLastError returns a single MAPIERROR structure that, in theory, includes a concatenation of all the errors generated by the previous method call. For more information, see MAPIERROR. As a caller, it is wise not to depend on having this extra error information available because object implementers are not required to provide it. However, it is strongly recommended that whenever implementers return MAPI_E_EXTENDED_ERROR, they make it possible for callers to retrieve a MAPIERROR structure with useful information about the error.

Because GetLastError is also an API function that is part of the Windows SDK, it can be easy to forget that in MAPI, GetLastError is an interface method and can only be called on MAPI objects. Another easy mistake to make is calling GetLastError on the wrong object. GetLastError must be called on the object that generated the error. For example, if your client makes a session call, and MAPI forwards the call to a service provider to do the work, your client should not call GetLastError on the service provider object. IMAPISession::GetLastError is the correct call; GetLastError should be invoked on the session object. For more information, see IMAPISession::GetLastError.