Пользовательский 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
ответ?