Compartir a través de


MAPI extendida de errores

Hace referencia a: Outlook 2013 | Outlook 2016

Los implementadores de métodos de interfaz pueden elegir simplemente devolver el éxito (S_OK) y el error (MAPI_E_CALL_FAILED) o diferenciar entre las condiciones de error, devolviendo tantos valores de error como tenga sentido para la situación. La mayoría de las situaciones pueden usar uno de los valores de error definidos por MAPI en MAPICODE. Archivo de encabezado H. Sin embargo, en situaciones que no están cubiertas por un valor predefinido, se puede usar el valor MAPI_E_EXTENDED_ERROR. MAPI_E_EXTENDED_ERROR indica al autor de la llamada que hay disponible más información sobre el error. El llamador recupera la información adicional llamando al método GetLastError en el mismo objeto que devolvió 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.