MAPI でのエラー処理

適用対象: Outlook 2013 | Outlook 2016

成功、警告、エラーの値は、結果ハンドルまたは HRESULT と呼ばれる 32 ビットの数値を使用して返されます。 HRESULT は実際には何のハンドルにもなりません。これは、値にエンコードされた複数のフィールドを持つ単なる 32 ビット値です。 0 の結果は成功を示し、0 以外の結果は失敗を示します。

32 ビット プラットフォームの MAPI は、HRESULT 値でのみ機能します。

次の図は、32 ビット プラットフォームの HRESULT 形式を示しています。

HRESULT の書式

HRESULT 形式

HRESULT の上位ビットは、戻り値が成功または失敗を表しているかどうかを示します。 0 に設定すると、値は成功を示します。 1 に設定すると、エラーを示します。

R、C、N、および r ビットは HRESULT で予約されています。

両方のバージョンのファシリティ フィールドは、エラーの責任領域を示します。 いくつかの機能がありますが、MAPI エラーの大部分は、インターフェイス エラーを表すためにFACILITY_ITFを使用します。 現在使用されている最も一般的な機能は、FACILITY_NULL、FACILITY_ITF、FACILITY_DISPATCH、FACILITY_RPC、FACILITY_STORAGEです。 新しい機能が必要な場合は、一意である必要があるため、Microsoft によって割り当てられます。 次の表では、さまざまな施設フィールドについて説明します。

Facility 説明
FACILITY_NULL
S_OKやE_OUTOF_MEMORYなど、広く適用可能な一般的な状態コードの場合。値は 0 です。
FACILITY_ITF
インターフェイス メソッドから返されるほとんどの状態コードの場合。値は インターフェイスによって定義されます。 つまり、2 つの異なるインターフェイスから返されるまったく同じ 32 ビット値を持つ 2 つの HRESULT 値は、異なる意味を持つ可能性があります。
FACILITY_DISPATCH
遅延バインディング IDispatch インターフェイス エラーの場合。
FACILITY_RPC
リモート プロシージャ呼び出しから返される状態コードの場合。
FACILITY_STORAGE
構造化ストレージに関連する IStorage または IStream メソッド呼び出しから返される状態コードの場合。 Windows エラー コードの範囲内のコード (下位 16 ビット) の状態コード (つまり、256 未満) は、対応する Windows エラーと同じ意味を持ちます。

コード フィールドは、エラーまたは警告を表すために割り当てられる一意の数値です。