SetErrorInfo (Compact 2013)

3/26/2014

This function sets the error information object for the current thread of execution.

Syntax

HRESULT SetErrorInfo( 
  DWORD dwReserved, 
  IErrorInfo* perrinfo 
); 

Parameters

  • dwReserved
    [in] Reserved; set to 0 (zero).
  • perrinfo
    [in] Pointer to an error object that supports IErrorInfo.

Return Value

Returns the HRESULT value S_OK if successful.

Remarks

This function releases the existing error information object, if one exists, and sets the pointer to perrinfo.

Use this function after creating an error object that associates the object with the current thread of execution.

If the property or method that calls SetErrorInfo is called by DispInvoke, DispInvoke does the following:

  • Fills the EXCEPINFO parameter with the values specified in the error information object
  • Returns DISP_E_EXCEPTION when the property or method returns a failure value for DispInvoke

Virtual function table (VTBL) binding controllers that do not use IDispatch::Invoke can get the error information object by using GetErrorInfo. This allows an object that supports a dual interface to use SetErrorInfo, regardless of whether the client uses VTBL binding or IDispatch.

Passing invalid (and under some circumstances NULL) pointers to this function causes an unexpected termination of the application.

Example

The following example code shows how to use the SetErrorInfo function.

To use this function correctly, make sure that you have an EXCEPINFO structure that is populated with information about the exception that occurred.

Important

For readability, the following code example does not contain security checking or error handling. Do not use the following code in a production environment.

ICreateErrorInfo *perrinfo;
HRESULT hr;
hr = CreateErrorInfo(&pcerrinfo);
hr = pcerrinfo->SetGUID(IID_IHello);
hr = pcerrinfo->SetSource(m_excepinfo.bstrSource);
hr = pcerrinfo->SetDescription(m_excepinfo.bstrDescription);
hr = pcerrinfo->SetHelpFile(NULL);
hr = pcerrinfo->SetHelpContext(0);

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

Requirements

Header

oleauto.h

Library

oleaut32.lib

See Also

Reference

Automation Functions
DispInvoke
IDispatch::Invoke
GetErrorInfo
IDispatch