Microsoft Specific
Standard classes are used to support some of the COM types. The classes are defined in COMDEF.H and the header files generated from the type library.
#include <comdef.h>
Class | Purpose |
_com_error | Defines the error object thrown by _com_raise_error in most failures. |
_com_ptr_t | Encapsulates COM interface pointers, and automates the required calls to AddRef, Release, and QueryInterface. |
_bstr_t | Wraps the BSTR type to provide useful operators and methods. |
_variant_t | Wraps the VARIANT type to provide useful operators and methods. |
In addition, there is a support routine called _com_raise_error, which is used by all compiler-generated COM support code to throw a _com_error in response to a failure
_com_raise_error is defined in comdef.h as,
void __stdcall _com_raise_error(HRESULT hr, IErrorInfo* perrinfo = 0) throw(_com_error);
The actual source code is,
void __stdcall _com_raise_error(HRESULT hr, IErrorInfo* perrinfo) throw(_com_error)
{
throw _com_error(hr, perrinfo);
}
_com_raise_error can be replaced by a user-written version of the same name and prototype. This could be done if you want to use #import, but don't want to use C++ exception handling. In that case, a user version of _com_raise_error might decide to do a longjmp or pop up a message box and halt. The user version should not return, though, since the compiler COM support code does not expect it to return.
END Microsoft Specific