エラー コードの解釈
問題の原因となっているアプリケーションを特定したら、発生したエラーについて調べる必要があります。 エラーは、アプリケーションで使用している言語に応じて、さまざまな形式で発生し、報告されます。
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 またはパスワードが無効です。 |