Главная » C++ » Получение сообщения об ошибке из HRESULT в C ++ после вызова C # COM-объекта
Получение сообщения об ошибке из HRESULT в C ++ после вызова C # COM-объекта
У меня есть COM-объект, написанный на C #. При некоторых обстоятельствах COM-объект может выдать исключение с описательным сообщением, если он обнаружит ошибку (например, throw new Exception("error message")).
Этот COM-объект вызывается из кода VB6 и из кода C ++.
Из кода VB6 я могу получить сообщение об ошибке, используя Err.Message,
В C ++ я получаю HRESULT 0x80131500, как указано в документации System.Exception.
Как только у меня есть этот HRESULT в C ++, как я могу получить сообщение об ошибке исключения (Exception.Message) как сообщение, возвращаемое Err.Message в VB6?
Я искал в Интернете и нашел несколько примеров, используя FormatMessage а также _com_error, но ни один из них не возвращает сообщение, которое я хочу.
Пробовать QueryInterface провальный объект для ISupportErrorInfo интерфейс, затем вызовите InterfaceSupportsErrorInfo метод с REFIID интерфейса, бросающего исключение. Если он вернется S_OKзатем просто вызывает GetErrorInfo функция, чтобы получить IErrorInfo интерфейс. Затем используйте GetDescription метод.