MAPI 中的错误处理
适用于:Outlook 2013 | Outlook 2016
使用称为结果句柄或 HRESULT 的 32 位数字返回成功、警告和错误值。 HRESULT 真的不是任何东西的句柄:它只是一个 32 位值,在值中编码了多个字段。 零结果表示成功,非零结果表示失败。
32 位平台上的 MAPI 仅适用于 HRESULT 值。
下图显示了 32 位平台的 HRESULT 格式。
HRESULT 格式
HRESULT 中的高顺序位指示返回值是表示成功还是失败。 如果设置为零,则该值指示成功。 如果设置为 1,则表示失败。
R、C、N 和 r 位在 HRESULT 中保留。
这两个版本中的“设施”字段指示错误的责任范围。 有几个设施,但绝大多数 MAPI 错误都使用 FACILITY_ITF 来表示接口错误。 当前使用的最常见功能包括:FACILITY_NULL、FACILITY_ITF、FACILITY_DISPATCH、FACILITY_RPC和FACILITY_STORAGE。 如果需要新设施,Microsoft 会分配它们,因为它们需要是唯一的。 下表描述了各种设施字段。
设施 | 说明 |
---|---|
FACILITY_NULL |
对于广泛适用的常见状态代码,例如S_OK或E_OUTOF_MEMORY;值为零。 |
FACILITY_ITF |
对于从接口方法返回的大多数状态代码;值由 接口定义。 也就是说,从两个不同接口返回的具有完全相同的 32 位值的两个 HRESULT 值可能具有不同的含义。 |
FACILITY_DISPATCH |
对于后期绑定 IDispatch 接口错误。 |
FACILITY_RPC |
对于从远程过程调用返回的状态代码。 |
FACILITY_STORAGE |
对于从 IStorage 或 IStream 方法返回的状态代码,调用与结构化存储相关的 。 包含 (以下 16 位) Windows 错误代码范围内的状态代码 (,即小于 256) 与相应的 Windows 错误具有相同的含义。 |
代码字段是分配给表示错误或警告的唯一数字。