エラー コードの解釈

問題の原因となっているアプリケーションを特定したら、発生したエラーについて調べる必要があります。 エラーは、アプリケーションで使用している言語に応じて、さまざまな形式で発生し、報告されます。

Microsoft Visual C++ では、成功、警告、失敗の値は、HRESULT と呼ばれる 32 ビットの数値を使用して返されます。 システム定義の HRESULT 値の一覧については、Windows SDK に含まれているヘッダー ファイル Winerror.h をご覧ください。 このファイルには、COM+ のすべてのエラー コードと説明が含まれています。 HRESULT 値の詳細については、「エラー処理」を参照してください。

Java 言語では、失敗を示すため、com.ms.com.ComFailException のインスタンスがスローされます。ここで、ComFailException オブジェクトは HRESULT を示しています。 com.ms.com.ComSuccessException のインスタンスは、戻り値が False の成功を示しています。 これらの例外の解釈については、Microsoft Visual J++ ドキュメントをご覧ください。

Note

VJ6 IDE で JIT デバッグをオフにしない限り、Visual J++ オブジェクトをホストしている COM+ アプリケーション サーバー プロセスは (アクティブなオブジェクトが 0 個の場合でも) アイドル ダウンしません。 その方法については、Visual J++ のドキュメントをご覧ください。

Visual Basic では、Err.Number プロパティを調べることにより HRESULT 値を取得できます。 エラーの説明は、Err.Description プロパティを使用して取得できます。

Microsoft Visual Studio の ERRLOOK ユーティリティを使用してシステム エラー メッセージまたはモジュール エラー メッセージを取得することもできます。 ERRLOOK は、Visual Studio デバッガーまたは他のオートメーション対応アプリケーションから 16 進数または 10 進数の値をドラッグ アンド ドロップすると、エラー メッセージ テキストを自動的に取得します。 さらに、値を入力するか、IDE クリップボードから貼り付けて [検索] オプションをクリックし、値を入力することもできます。

次の C++ メソッドは、入力 HRESULT に基づいてエラーの説明を出力します。

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

void ErrorDescription(HRESULT hr) 
{ 
     if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) 
         hr = HRESULT_CODE(hr); 
     TCHAR* szErrMsg; 

     if(FormatMessage( 
       FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 
       NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
       (LPTSTR)&szErrMsg, 0, NULL) != 0) 
     { 
         _tprintf(TEXT("%s"), szErrMsg); 
         LocalFree(szErrMsg); 
     } else 
         _tprintf( TEXT("[Could not find a description for error # %#x.]\n"), hr); 
}

次の表に、COM+ の一般的なエラー コードの説明を示します。

エラー コード 定義
COMADMIN_E_ALREADYINSTALLED
オブジェクトは既に登録されています。
COMADMIN_E_APP_FILE_READFAIL
アプリケーション ファイルの読み取り中にエラーが発生しました。
COMADMIN_E_APP_FILE_VERSION
アプリケーション ファイルのバージョン番号が無効です。
COMADMIN_E_APP_FILE_WRITEFAIL
アプリケーション ファイルへの書き込み中にエラーが発生しました。
COMADMIN_E_APPDIRNOTFOUND
アプリケーションのインストール ディレクトリが見つかりませんでした。
COMQC_E_APPLICATION_NOT_QUEUED
"queue" モニカーを使って作成できるのは、"queued" とマークされた COM+ アプリケーションだけです。
COMADMIN_E_APPLICATIONEXISTS
アプリケーションは既にインストールされています。
COMADMIN_E_APPLID_MATCHES_CLSID
新しいアプリケーション ID と同じ GUID を持つ CLSID が、このコンピューターに既にインストールされています。
COMADMIN_E_APP_NOT_RUNNING
指定されたアプリケーションは現在、実行されていません。
COMADMIN_E_AUTHENTICATIONLEVEL
更新要求に必要な認証レベルを設定することができません。
COMADMIN_E_BADPATH
ファイル パスが無効です。
COMADMIN_E_BADREGISTRYLIBID
登録されているタイプ ライブラリ ID が無効です。
COMADMIN_E_BADREGISTRYPROGID
コンポーネントの ProgID が見つからないか、破損しています。
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
アプリケーション プロキシはエクスポートできません。
COMADMIN_E_CAN_NOT_START_APP
ライブラリ アプリケーションまたはアプリケーション プロキシのいずれかであるため、アプリケーションを起動できませんでした。
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
システム アプリケーションはエクスポートできません。
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
コンポーネントがインポートされている可能性があるため、ユーザーはこのコンポーネントにサブスクライブできません。
COMADMIN_E_CANTCOPYFILE
ファイルのコピー中、エラーが発生しました。
COMADMIN_E_CLSIDORIIDMISMATCH
アプリケーション ファイルの CLSID または IID が、対応する DLL と一致しません。
COMADMIN_E_COMP_MOVE_BAD_DEST
ターゲット アプリケーションが存在しなくなったため、コンポーネントの移動に失敗しました。
COMADMIN_E_COMP_MOVE_LOCKED
ソース アプリケーションまたはターゲット アプリケーションがシステム アプリケーションであるか、現在変更がロックされているため、コンポーネントの移動が許可されませんでした。
COMADMIN_E_COMPFILE_BADTLB
タイプ ライブラリを読み込めませんでした。
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
DLL は、タイプ ライブラリに一覧表示されているコンポーネントをサポートしていません。
COMADMIN_E_COMPFILE_DOESNOTEXIST
このファイルは存在しません。
COMADMIN_E_COMPFILE_GETCLASSOBJ
DLL で GetClassObject メソッドが失敗しました。
COMADMIN_E_COMPFILE_LOADDLLFAIL
DLL を読み込めませんでした。
COMADMIN_E_COMPFILE_NOREGISTRAR
このファイルで参照されているコンポーネント レジストラーは使用できません。
COMADMIN_E_COMPFILE_NOTINSTALLABLE
このファイルには、コンポーネントまたはコンポーネント情報は含まれていません。
COMADMIN_E_COREQCOMPINSTALLED
同じ DLL 内のコンポーネントが既にインストールされています。
COMADMIN_E_DLLLOADFAILED
DLL を読み込めませんでした。
COMADMIN_E_DLLREGISTERSERVER
コンポーネントのインストール時に DllRegisterServer 関数が失敗しました。
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
イベント クラスをサブスクライバー コンポーネントとして構成することはできません。 イベント クラスをサブスクライバーにしてサブスクリプションを作成しようとすると、このエラーが返されます。
COMADMIN_E_INVALIDUSERIDS
アプリケーション ファイル内の 1 人以上のユーザーが無効です。
COMADMIN_E_KEYMISSING
カタログ内にオブジェクトが見つかりませんでした。
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
ライブラリ アプリケーションとアプリケーション プロキシには互換性がありません。 このエラーは、アプリケーション プロキシのエクスポートが試行され、アプリケーションのアクティブ化プロパティがライブラリである場合に返されます。
COMADMIN_E_NOREGISTRYCLSID
コンポーネントの CLSID が見つからないか、破損しています。
COMADMIN_E_NOSERVERSHARE
使用可能なサーバー ファイル共有がありません。
COMADMIN_E_NOTCHANGEABLE
このオブジェクトとそのサブオブジェクトに対する変更が無効になっています。
COMADMIN_E_NOTDELETEABLE
このオブジェクトの削除機能が無効になっています。
COMADMIN_E_NOTINREGISTRY
レジストリにオブジェクトが見つかりませんでした。
COMADMIN_E_NOUSER
1 人以上のユーザーが無効です。
COMADMIN_E_OBJECT_DOES_NOT_EXIST
指定されたオブジェクトのいずれかが見つかりません。
COMADMIN_E_OBJECT_PARENT_MISSING
挿入または更新されるオブジェクトのいずれかが、有効な親コレクションに属していません。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 詳細については、「ErrorInfo」コレクションを参照してください。
COMADMIN_E_OBJECTEXISTS
追加または名前変更しようとしているオブジェクトは既に存在しています。
COMADMIN_E_OBJECTINVALID
オブジェクトの 1 つ以上のプロパティが見つからないか、無効です。
COMADMIN_E_OBJECTNOTPOOLABLE
このオブジェクトはプールできません。
COMADMIN_E_PROPERTYSAVEFAILED
1 つ以上のプロパティ設定が無効であるか、互いに競合しています。
COMADMIN_E_PROPERTY_OVERFLOW
プロパティ値が大きすぎます。
COMADMIN_E_REGFILE_CORRUPT
登録ファイルが破損しています。
COMADMIN_E_REGISTERTLB
システムはタイプ ライブラリを登録できませんでした。
COMADMIN_E_REGISTRARFAILED
コンポーネント レジストラーでエラーが発生しました。
COMADMIN_E_REMOTEINTERFACE
インターフェイス情報が不足しているか、変更されています。
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
この操作は、このプラットフォームでは有効になっていません。
COMADMIN_E_ROLE_DOES_NOT_EXIST
コンポーネント、インターフェイス、またはメソッドに割り当てられたロールがアプリケーションに存在していません。
COMADMIN_E_ROLEEXISTS
ロールは既に存在します。
COMADMIN_E_SERVICENOTINSTALLED
サービスがインストールされていません。
COMADMIN_E_SESSION
サーバー カタログ バージョンがサポートされていません。
COMADMIN_S_SOMEALREADYPAUSED
指定されたアプリケーション プロセスの 1 つ以上が既に一時停止しています。
COMADMIN_S_SOMEALREADYRUNNING
指定されたアプリケーション プロセスの 1 つ以上が既に実行されています。
COMADMIN_E_START_APP_NEEDS_COMPONENTS
アプリケーションを起動するには、アプリケーションにコンポーネントが必要です。
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
NT サービスとして実行されている COM+ アプリケーションは、プール済みまたはリサイクル済みとしてマークできません。
COMADMIN_E_SYSTEMAPP
この操作は、システム アプリケーションでは実行できません。
COMADMIN_E_USER_IN_SET
1 人以上のユーザーが既にローカル パーティション セットに割り当てられています。
COMADMIN_E_USERPASSWDNOTVALID
アプリケーションに設定されている ID またはパスワードが無効です。

障害の分離と Failfast ポリシー

エラーの原因を見つける

COM+ が戻り値を変更する方法

COM+ でエラーを処理するための戦略

トラブルシューティング