¿Cómo puedo devolver tanto una cadena de error como un código de error a VB6 desde un control ATL activex?

Estoy tratando de devolver un error detallado a VB6 usandoCComCoClass :: Error, pero parece que solo puedo devolver un código de error / o un mensaje, pero no ambos.

return Error(_T("Not connected"), __uuidof(IMyInterface), HRESULT_FROM_WIN32(ERROR_CONNECTION_INVALID));

da como resultado un mensaje de error genérico "Método 'Solicitud' de objeto 'IMyInterface' error" en Err.Description en el lado VB6 (pero ERROR_CONNECTION_INVALID en Err.Number), mientras

return Error(_T("Not connected"));

da como resultado el mensaje de error apropiado, pero un código de error genérico en Err.Number. ¿Cómo puedo obtener lo mejor de ambos mundos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta