IErrorInfo question
Hi,
I am using the _com_utils::ConvertBSTRToString function to convert a
CComBSTR to char *.
The documentation for this function says that it throws a _com_error
exception in case of error.
I am using this function in my ATL exe server. If I wish to propagate
the error from ConvertBSTRToString to my client, how do I do it.
One of the options I can think of is to do the following in my server
code:
try
{
fp = fopen(ConvertBSTRToString(m_bstrFileName), "r");
}
catch(_com_error &e)
{
return Error(e.Description().copy(), IID_IPacketReader, e.Error());
}
where m_bstrFileName is of type CComBSTR. If I return a new error
object so that my client can catch it, should I do perform
e.Description().copy() OR just e.Description() in the CComCoClass Error
function? What concerns me is the fact that my BSTR could leak memory.
Secondly, if I do not handle the exception here, would it get
propagated to the client's try...catch automatically. I am under the
impression that for a client to catch a _com_error exception, the
server will need to return a HRESULT with some error code. In this
case, the function does not return a HRESULT.
Any help would be appreciated.
Cheers,
Ups