次の方法で共有


エラー処理戦略

インターフェイス メソッドは仮想であるため、呼び出し元は、1 つの呼び出しから返される可能性がある値の完全なセットを認識することはできません。 メソッドの実装の 1 つは、5 つの値を返す場合があります。もう 1 つは 8 を返す場合があります。

ドキュメントには、各メソッドに対して返される可能性がある一般的な値が一覧表示されます。これらは特別な意味を持っているため、コードでチェックして処理する必要がある値です。 他の値が返される場合もありますが、意味がないため、それらを処理するために特別なコードを記述する必要はありません。 0 または 0 以外の単純なチェックで十分です。

HRESULT 値

COM 関数とメソッドの戻り値は、HRESULT です。 一部の HRESULT の値は、すべての重複を排除し、システム エラー コードと重複しないように COM で変更されています。 重複するシステム エラー コードがFACILITY_WIN32に変更され、重複するエラー コードはFACILITY_NULLに残ります。 一般的な HRESULT 値とその値を次の表に示します。

HRESULT 価値 形容
E_ABORT
0x80004004
エラーが未指定のため、操作が中止されました。
E_ACCESSDENIED
0x80070005
一般的なアクセス拒否エラー。
E_FAIL
0x80004005
未指定のエラーが発生しました。
E_HANDLE
0x80070006
無効なハンドルが使用されました。
E_INVALIDARG
0x80070057
1 つ以上の引数が無効です。
E_NOINTERFACE
0x80004002
QueryInterface メソッドは、要求されたインターフェイスを認識しませんでした。 インターフェイスはサポートされていません。
E_NOTIMPL
0x80004001
メソッドは実装されていません。
E_OUTOFMEMORY
0x8007000E
メソッドが必要なメモリを割り当てませんでした。
E_PENDING
0x8000000A
操作を完了するために必要なデータはまだ使用できません。
E_POINTER
0x80004003
無効なポインターが使用されました。
E_UNEXPECTED
0x8000FFFF
致命的なエラーが発生しました。
S_FALSE
0x00000001
メソッドは成功し、FALSE ブール値を返しました。
S_OK
0x00000000
メソッドは成功しました。 ブール値の戻り値が必要な場合、戻り値は TRUE

ネットワーク エラー

エラー コードの最初の 4 桁が 8007 の場合は、システムまたはネットワーク エラーを示します。 net コマンドを使用して、これらの種類のエラーをデコードできます。 エラーをデコードするには、最初に 16 進数エラー コードの最後の 4 桁を 10 進数に変換します。 次に、コマンド プロンプトで次のように入力します。ここで、10 進コードはデコードする戻り値に置き換えられます。

net helpmsg <decimal_code> する

net コマンドは、エラーの説明を返します。 たとえば、COM がエラー 8007054B を返す場合は、054B を 10 進数 (1355) に変換します。 次に、次のように入力します。

net helpmsg 1355

net コマンドは、"指定されたドメインが存在しませんでした" というエラーの説明を返します。

COM でのエラー処理の