_set_com_error_handler
Reemplaza la función predeterminada que se utiliza para el control de errores de COM. _set_com_error_handler is Microsoft-specific.
Sintaxis
void __stdcall _set_com_error_handler(
void (__stdcall *pHandler)(
HRESULT hr,
IErrorInfo* perrinfo
)
);
Parámetros
pHandler
Puntero a la función de reemplazo.
Hr
Información de HRESULT.
perrinfo
Objeto IErrorInfo
.
Comentarios
De manera predeterminada, _com_raise_error controla todos los errores de COM. Puede cambiar este comportamiento mediante _set_com_error_handler para llamar a su propia función de control de errores.
La función de reemplazo debe tener una firma que sea equivalente a la de _com_raise_error
.
Ejemplo
// _set_com_error_handler.cpp
// compile with /EHsc
#include <stdio.h>
#include <comdef.h>
#include <comutil.h>
// Importing ado dll to attempt to establish an ado connection.
// Not related to _set_com_error_handler
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
void __stdcall _My_com_raise_error(HRESULT hr, IErrorInfo* perrinfo)
{
throw "Unable to establish the connection!";
}
int main()
{
_set_com_error_handler(_My_com_raise_error);
_bstr_t bstrEmpty(L"");
_ConnectionPtr Connection = NULL;
try
{
Connection.CreateInstance(__uuidof(Connection));
Connection->Open(bstrEmpty, bstrEmpty, bstrEmpty, 0);
}
catch(char* errorMessage)
{
printf("Exception raised: %s\n", errorMessage);
}
return 0;
}
Exception raised: Unable to establish the connection!
Requisitos
Header:<comdef.h>
Lib: si se especifica la opción del compilador /Zc:wchar_t (valor predeterminado), use comsuppw.lib o comsuppwd.lib. Si se especifica la opción del compilador /Zc:wchar_t-, use comsupp.lib. Para obtener más información, incluso cómo establecer esta opción en el IDE, vea /Zc:wchar_t (wchar_t es un tipo nativo).
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de