Исключение из COM-объекта написанного на шарпе
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 11.05.13 15:04
Оценка:
Привет всем.

Помогите, пожалуйста, разобраться в базой вещи — как из метода COM-объекта, написанного на шарпе, следует возвращать ошибки?

Наверное, вообще никаких напрягов быть не должно. Но что-то не получается.

Есть код вида
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[SuppressUnmanagedCodeSecurity]
[Guid("bla-bla-bla")]
public unsafe interface IMyComInterface
{
 [PreserveSig]
 com.HResultCode Method();
};//interface IMyComInterface

unsafe class TMyComInterface:IMyComInterface
{
 [PreserveSig]
 public com_lib.HResultCode Method()
 {
  var exc=new ApplicationException("TEST EXCEPTION!");

  throw exc;
 }//Read
};//class TMyComInterface


Программа на плюсах, когда вызывает Method, получает код ошибки S_OK. Хотя ApplicationException содержит hr=COR_E_APPLICATION.

Если убрать PreserveSig, то процесс валится (походу исключение вылетает и всё убивает).

Вообщем — где я перемудрил? Или мне нужно самому возвращать hr и вызывать SetErrorInfo?

Заранее спасибо!
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.