_set_com_error_handler
Ersetzt die Standardfunktion für die COM-Fehlerbehandlung. _set_com_error_handler ist microsoftspezifisch.
Syntax
void __stdcall _set_com_error_handler(
void (__stdcall *pHandler)(
HRESULT hr,
IErrorInfo* perrinfo
)
);
Parameter
pHandler
Zeiger auf die Ersetzungsfunktion.
Hr
HRESULT-Informationen.
perrinfo
IErrorInfo
-Objekt
Hinweise
Standardmäßig behandelt _com_raise_error alle COM-Fehler. Sie können dieses Verhalten ändern, indem Sie _set_com_error_handler verwenden, um Ihre eigene Fehlerbehandlungsfunktion aufzurufen.
Die Ersetzungsfunktion muss über eine Signatur verfügen, die der von _com_raise_error
entspricht.
Beispiel
// _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!
Anforderungen
Header:<comdef.h>
Lib: Wenn die Compileroption "/Zc:wchar_t " angegeben ist (Standard), verwenden Sie "comsuppw.lib" oder "comsuppwd.lib". Wenn die Compileroption "/Zc:wchar_t- compiler" angegeben ist, verwenden Sie "comsupp.lib". Weitere Informationen, einschließlich des Festlegens dieser Option in der IDE, finden Sie unter /Zc:wchar_t (wchar_t Ist nativer Typ).
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für