Пользовательский HRESULT из COM-компонента

Создание пользовательских HRESULT был рассмотрен здесь Создание собственного HRESULT?

Решение вышеупомянутого вопроса хорошо для нативных клиентов C++, они могут использовать возвращенные HRESULT в FormatMessage() и получить строку ошибки, как насчет C# и JavaScript-клиента? Ради обсуждения давайте забудем FormatMessage() через PInvoke.

например, если функция COM возвращает E_ACCESSDENIED и клиент C# получит его через красиво упакованное исключение, со строкой ошибки и символическим именем (E_ACCESSDENIED)

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

Понятно, что системные коды ошибок были сопоставлены с исключениями.Net. Вопрос в том, как вернуть сгенерированный компилятором сообщения пользовательский код ошибки, упакованный в HRESULT?

Является MAKE_HRESULT ответ?

0 ответов

Другие вопросы по тегам