MAPI 扩展错误

适用于:Outlook 2013 | Outlook 2016

接口方法的实现者可以选择只返回成功 (S_OK) 和失败 (MAPI_E_CALL_FAILED) ,或区分错误条件,返回尽可能多的错误值,以便对情况有意义。 大多数情况下,可以使用 MAPICODE 中 MAPI 定义的错误值之一。H 头文件。 但是,对于预定义值未涵盖的情况,可以使用值MAPI_E_EXTENDED_ERROR。 MAPI_E_EXTENDED_ERROR向调用方指示有关错误的详细信息。 调用方通过在返回MAPI_E_EXTENDED_ERROR的同一对象上调用 GetLastError 方法来检索其他信息。

可以调用 GetLastError 来检索有关任何错误代码的信息,而不仅仅是MAPI_E_EXTENDED_ERROR。 许多 MAPI 对象实现包含 GetLastError 方法的接口。 GetLastError 返回单个 MAPIERROR 结构,从理论上讲,该结构包含由上一个方法调用生成的所有错误的串联。 有关详细信息,请参阅 MAPIERROR。 作为调用方,最好不要依赖于提供此额外的错误信息,因为不需要对象实现者来提供它。 但是,强烈建议每当实现者返回MAPI_E_EXTENDED_ERROR时,它们使调用方能够检索包含有关错误的有用信息的 MAPIERROR 结构。

由于 GetLastError 也是Windows SDK的一部分的 API 函数,因此很容易忘记,在 MAPI 中,GetLastError 是一种接口方法,只能在 MAPI 对象上调用。 另一个容易犯的错误是在错误的对象上调用 GetLastError 。 必须在生成错误的 对象上调用 GetLastError。 例如,如果客户端发出会话调用,并且 MAPI 将调用转发给服务提供商来执行工作,则客户端不应对服务提供程序对象调用 GetLastErrorIMAPISession::GetLastError 是正确的调用;应在会话对象上调用 GetLastError 。 有关详细信息,请参阅 IMAPISession::GetLastError