_set_com_error_handler
Programu Microsoft
Zastępuje to domyślna funkcja jest używana do obsługi błędów COM.
void __stdcall _set_com_error_handler(
void (__stdcall *pHandler)(
HRESULT hr,
IErrorInfo* perrinfo
)
);
Parametry
pHandler
Wskaźnik do funkcji zastępczej.hr
HRESULTinformacje.perrinfo
IErrorInfoobiekt.
Uwagi
Domyślnie _com_raise_error obsługuje wszystkie błędy COM.To zachowanie można zmienić za pomocą _set_com_error_handler wywołanie funkcji obsługi błędów.
Funkcja zastępcza musi mieć podpis jest równoważne z _com_raise_error.
Przykład
// _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;
}
Wymagania
Nagłówek: comdef.h
Biblioteka: , jeśli włączona jest opcja "wchar_t jest typu macierzystego" kompilatora, użyj comsuppw.lib lub comsuppwd.lib.Jeśli"wchar_t typu macierzystego" jest wyłączona, należy użyć comsupp.lib.Aby uzyskać więcej informacji, zobacz /Zc:wchar_t (Typ macierzysty jest wchar_t).