Compartir a través de


Función SetErrorInfo (oleauto.h)

Establece el objeto de información de error para el subproceso lógico actual de ejecución.

Sintaxis

HRESULT SetErrorInfo(
  [in]           ULONG      dwReserved,
  [in, optional] IErrorInfo *perrinfo
);

Parámetros

[in] dwReserved

Reservado para uso futuro. Debe ser cero.

[in, optional] perrinfo

Objeto de error.

Valor devuelto

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Esta función libera el objeto de información de error existente, si existe, y establece el puntero en perrinfo. Utilice esta función después de crear un objeto de error que asocie el objeto con el subproceso lógico actual de ejecución.

Si dispInvoke llama a la propiedad o método que llama a SetErrorInfo, DispInvoke rellenará el parámetro EXCEPINFO con los valores especificados en el objeto de información de error. DispInvoke devolverá DISP_E_EXCEPTION cuando la propiedad o el método devuelva un valor devuelto de error para DispInvoke

Los controladores de enlace de la tabla de funciones virtuales (VTBL) que no usan IDispatch::Invoke pueden obtener el objeto de información de error mediante GetErrorInfo. Esto permite que un objeto que admita una interfaz dual use SetErrorInfo, independientemente de si el cliente usa el enlace VTBL o IDispatch.

Cuando se hace una llamada entre apartamentos, COM borra cualquier objeto de error.

Realizar una llamada COM que pase por un código auxiliar proxy borrará cualquier objeto de error existente para el subproceso que realiza la llamada. Un objeto llamado no debe realizar estas llamadas después de llamar a SetErrorInfo y antes de devolver. El autor de la llamada no debe realizar ninguna llamada después de que se devuelva la llamada y antes de llamar a GetErrorInfo. Como regla general, un método de interfaz debe devolver lo antes posible después de llamar a SetErrorInfo y el autor de la llamada debe llamar a GetErrorInfo lo antes posible después de que se devuelva la llamada.

Al escribir el bucle de mensajes modales COM, se borrará cualquier objeto de error existente. Un objeto llamado no debe escribir un bucle de mensajes después de llamar a SetErrorInfo.

Ejemplos

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();
}

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado oleauto.h
Library OleAut32.lib
Archivo DLL OleAut32.dll