Tratamento de erros no MAPI

Aplica-se a: Outlook 2013 | Outlook 2016

Os valores de êxito, aviso e erro são retornados usando um número de 32 bits conhecido como identificador de resultado ou HRESULT. Um HRESULT não é realmente um identificador para nada; é apenas um valor de 32 bits com vários campos codificados no valor. Um resultado zero indica sucesso e um resultado diferente de zero indica falha.

O MAPI em plataformas de 32 bits funciona exclusivamente com valores HRESULT.

A ilustração a seguir mostra o formato HRESULT para plataformas de 32 bits.

HRESULT format

Formato HRESULT

O bit de ordem alta no HRESULT indica se o valor retornado representa sucesso ou falha. Se definido como zero, o valor indicará êxito. Se definido como 1, indica falha.

Os bits R, C, N e r são reservados no HRESULT.

O campo do recurso em ambas as versões indica a área de responsabilidade pelo erro. Há vários recursos, mas a grande maioria dos erros MAPI usa FACILITY_ITF para representar erros de interface. Os recursos mais comuns usados atualmente são: FACILITY_NULL, FACILITY_ITF, FACILITY_DISPATCH, FACILITY_RPC e FACILITY_STORAGE. Se novos recursos forem necessários, a Microsoft os alocará porque eles precisam ser exclusivos. A tabela a seguir descreve os vários campos do recurso.

Facility Descrição
FACILITY_NULL
Para códigos de status comuns amplamente aplicáveis, como S_OK ou E_OUTOF_MEMORY; o valor é zero.
FACILITY_ITF
Para a maioria dos códigos de status retornados de métodos de interface; o valor é definido pela interface. Ou seja, dois valores HRESULT com exatamente o mesmo valor de 32 bits retornado de duas interfaces diferentes podem ter significados diferentes.
FACILITY_DISPATCH
Para erros de interface IDispatch de associação tardia.
FACILITY_RPC
Para códigos de status retornados de chamadas de procedimento remoto.
FACILITY_STORAGE
Para códigos de status retornados de chamadas de método IStorage ou IStream relacionadas ao armazenamento estruturado. Códigos de status com valores de código (16 bits inferiores) no intervalo de códigos de erro do Windows (ou seja, menores que 256) têm o mesmo significado que os erros correspondentes do Windows.

O campo de código é um número exclusivo atribuído para representar o erro ou aviso.