この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SetErrorInfo (コンポーネント オートメーション)

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

エラー情報オブジェクト実行の現在の論理スレッドを設定します。


HRESULT SetErrorInfo(
  DWORD  dwReserved,
  IErrorInfo  *perrinfo
);

dwReserved

将来使用するために予約されています。 0 にします。

perrinfo

エラー オブジェクトへのポインター。

返された HRESULT から取得した戻り値は。

戻り値

説明

S_OK

成功。

この関数解放既存のエラー情報オブジェクトが 1 つ存在し、perrinfo にポインターをセットします。 この関数は、オブジェクト実行の現在の論理スレッドに関連付けますエラー オブジェクトを作成した後に使用します。

プロパティまたはメソッドを呼び出す SetErrorInfo https://msdn.microsoft.com/ja-jp/library/ms221409.aspx が DispInvoke https://msdn.microsoft.com/ja-jp/library/ms221366.aspxによって呼び出される場合、し DispInvoke https://msdn.microsoft.com/ja-jp/library/ms221366.aspx は、EXCEPINFO パラメーターで塗りつぶすエラー情報のオブジェクトで指定された値。 DispInvoke は、プロパティまたはメソッドが返されるエラーときに DISP_E_EXCEPTION DispInvoke https://msdn.microsoft.com/ja-jp/library/ms221366.aspx の値を返すに戻ります。

IDispatch::Invoke https://msdn.microsoft.com/ja-jp/library/ms221479.aspx を使用しないする仮想関数テーブル (VTBL) のバインドのコントローラーは、GetErrorInfo https://msdn.microsoft.com/ja-jp/library/ms221032.aspx を使用してエラー情報オブジェクトを取得できます。 これにより、SetErrorInfoクライアントは VTBL バインディングまたは IDispatch を使用かどうかに関係なくを使用するデュアル インターフェイスをサポートするオブジェクト。

アパートメント間呼び出しが行われたとき COM エラー オブジェクトからクリアします。

プロキシ/スタブを経由する COM 呼び出しを行う呼び出し元スレッド用の既存のエラー オブジェクトがクリアされます。 SetErrorInfo の https://msdn.microsoft.com/ja-jp/library/ms221409.aspx の呼び出し後と終わりを返す前に、呼び出されたオブジェクトなどの呼び出しを作成できませんする必要があります。 呼び出しが返されると GetErrorInfo の https://msdn.microsoft.com/ja-jp/library/ms221032.aspx を呼び出す前に、呼び出し元などの呼び出しを作成できませんする必要があります。 経験則で、としてインターフェイス メソッドは戻ります、できるだけ早く SetErrorInfo、および呼び出し元を呼び出す必要があります呼び出す GetErrorInfo https://msdn.microsoft.com/ja-jp/library/ms221032.aspx 呼び出し戻った後に、できるだけ早く。

COM モーダル メッセージ ループを入力、既存のエラー オブジェクトがクリアされます。 呼び出されたオブジェクトをメッセージ ループを SetErrorInfo の https://msdn.microsoft.com/ja-jp/library/ms221409.aspx を呼び出した後入力していないください。

ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;

hr = CreateErrorInfo(&pcerrinfo);
if (SUCCEEDED(hr))
{
   hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
   if (SUCCEEDED(hr))
   {
      SetErrorInfo(0, perrinfo);
      perrinfo->Release();
   }
   pcerrinfo->Release();
}

表示: