次の方法で共有


AtlReportError

 

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 バージョンでは lpszDescLPCOLESTR 型にします。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");
}

注意

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

必要条件

ヘッダー: atlcom.h

参照

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