2012-03-19 2 views
2

Как создать COMException при задании HRESULT?Создать COMException от HRESULT

У меня есть P/Invoke: ed win32-method, который возвращает HRESULT.
Если он возвращает отказ, я хочу отправить COMException со стандартным текстом ошибки.
Как мне это сделать?

  1. throw new COMException(null, hResult)

  2. COMException e = new COMException;
    e.HResult = hResult;
    throw e;

Или я должен использовать какой-то другой способ?

ответ

1

Я бы просмотрел поле PreserveSig на вашем звонке DllImport. Это приведет к возникновению исключения для любого не возвращаемого из функции значения S_OKHRESULT.

+1

Будет ли это делать функции, которые возвращаются, например. Бросок S_FALSE? Это было бы странно, но, вероятно, лучше, чем невозможно отличить его от 'S_OK'. – svick

Смежные вопросы