Совместимость IJolietDiscMaster::AddData с 64-битной операционной системой

В настоящее время для Windows XP и Windows 7 32 бит я использую COM-интерфейсы IJolierDiscMaster для записи компакт-дисков. В настоящее время я переношу приложение Windows на Windows 10. Когда я пытаюсь записать компакт-диск в Windows 10, он выдает исключение «System.Runtime.InteropServices.COMException (Ox80010105): сервер выдал исключение (исключение из HRESULT: Ox80010105 RPC_E_SERVERFAULT) в IJolietDiscMaster. .AddData

Вот интерфейс:

[ComImport]
  [Guid("E3BC42CE-4E5C-11D3-9144-00104BA11C5E")]
  [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  internal interface IJolietDiscMaster
  {
       void AddData(IStorage pStorage, int lFileOverwrite);
}

Вот код для записи компакт-диска

fDiscMaster.SetActiveDiscRecorder(fActiveRecorder);
CreateIStorage();
fDataDiscWriter.AddData(fRootStorage, 1);

Он не работает в методе AddData со следующим исключением:

  :System.Runtime.InteropServices.COMException (0x80010105): The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))
   at COM.IJolietDiscMaster.AddData(IStorage pStorage, Int64 lFileOverwrite)


person Amarnath    schedule 29.03.2019    source источник
comment
Какой язык? В какой строке выдает эту ошибку? Какие классы-оболочки COM вы используете? Есть ли IErrorInfo для сообщения об ошибке?   -  person Ben    schedule 29.03.2019
comment
Попробуйте подключить отладчик к целевому процессу (я думаю, что это, вероятно, dllhost или Explorer), чтобы получить больше информации об исключении.   -  person Ben    schedule 29.03.2019
comment
@Ben — добавлен код с информацией об ошибке. Это язык C Sharp.   -  person Amarnath    schedule 29.03.2019
comment
А что можно увидеть в отладчике? Каково значение fRootStorage, например? Вы подключили отладчик к серверному процессу, чтобы видеть, какое исключение SEH генерируется?   -  person Ben    schedule 29.03.2019
comment
Еще большая загадка заключается в том, как это могло работать раньше. С опубликованным объявлением интерфейса он вызывает совершенно неправильную функцию GetTotalDataBlocks() вместо AddData(). Жесткая авария является ожидаемым результатом.   -  person Hans Passant    schedule 29.03.2019
comment
@Hans Я не упомянул все методы интерфейса. Да, у него есть все методы, необходимые в интерфейсе. Просто чтобы выделить проблему, с которой я столкнулся, упомянул только метод AddData.   -  person Amarnath    schedule 01.04.2019