次の方法で共有


AtlReportError

更新 : 2007 年 11 月

IErrorInfo インターフェイスをセットアップして、エラー情報をオブジェクトのクライアントに提供します。

HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCOLESTR lpszDesc,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCOLESTR lpszDesc,
   DWORD dwHelpID,
   LPCOLESTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCSTR lpszDesc,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCSTR lpszDesc,
   DWORD dwHelpID,
   LPCSTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   UINT nID,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0,
   HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   UINT nID,
   DWORD dwHelpID,
   LPCOLESTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0,
   HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);

パラメータ

  • clsid
    [入力] エラーを報告するオブジェクトの CLSID。

  • lpszDesc
    [入力] エラーを説明する文字列。Unicode バージョンでは lpszDesc は LPCOLESTR 型にします。ANSI バージョンでは LPCSTR 型にします。

  • iid
    [入力] エラーを定義するインターフェイスの IID または GUID_NULL。エラーはオペレーティング システムによって定義されます。

  • hRes
    [入力] 呼び出し側に返す HRESULT

  • nID
    [入力] エラーを説明する文字列を格納するリソースの識別子。この値は、0x0200 から 0xFFFF までの間にする必要があります。nID が有効な文字列を指していない場合、デバッグ ビルドでは ASSERT が発生します。リリース ビルドでは、エラーを説明する文字列が "Unknown Error" に設定されます。

  • dwHelpID
    [入力] エラーに対するヘルプ コンテキストの識別子。

  • lpszHelpFile
    [入力] エラーを説明するヘルプ ファイルのパスと名前。

  • hInst
    [入力] リソースへのハンドル。既定では、このパラメータは __AtlBaseModuleModule::GetResourceInstance です。__AtlBaseModuleModuleCAtlBaseModule またはその派生クラスのグローバルなインスタンスです。

戻り値

hRes パラメータが 0 でない場合は、hRes の値を返します。hRes が 0 の場合は、AtlReportError の最初の 4 つのバージョンは DISP_E_EXCEPTION を返します。最後の 2 つのバージョンは **MAKE_HRESULT( 1, FACILITY_ITF,**nID ) マクロの結果を返します。

解説

文字列 lpszDesc は、エラーの説明として使われます。クライアントは、AtlReportError から返された hRes を受け取ると、IErrorInfo 構造体にアクセスしてエラーに関する詳細な情報を取得できます。

使用例

STDMETHODIMP CMyControl::MyErrorProneMethod()
{
   BOOL bSucceeded = ErrorProneFunc();
   if (bSucceeded)
      return S_OK;
   else
      // hRes is set to DISP_E_EXCEPTION
      return AtlReportError(GetObjectCLSID(), L"My error message");
}
t3hhtydd.alert_caution(ja-jp,VS.90).gif注意 :

C++ catch ハンドラで AtlReportError を使用しないでください。これらのいくつかの関数をオーバーライドするときに ATL 文字列変換マクロが内部的に使用されるため、結果的に _alloca 関数が内部的に使用されます。C++ catch ハンドラで AtlReportError を使用すると、C++ catch ハンドラで例外が発生する可能性があります。

必要条件

ヘッダー : atlcom.h

参照

参照

MAKE_HRESULT

その他の技術情報

デバッグとエラー報告に関するグローバル関数