除了S_OK(0)的任何结果,我目前正在升级到广泛使用COM/MFC /项目的异常(谁知道有多少其他技术)。作为升级的一部分,我们试图将尽可能多的功能转移到托管的C#代码中,但不幸的是有些东西无法移动(因为我不会介入)。其中一件事就是严重滥用COM的一段代码,并返回HRESULT中的指针,这些指针随后会转换为各种其他COM接口实现对象。我试过下面的代码的HRESULT转换为指针,我可以再从得到的接口:得到一个COM对象扔在C#
MyComInterfaceInCS myObj = null;
try
{
world.GetTD_MyComInterfaceInCS();
}
catch (COMException comException)
{
int pointerValue = Marshal.GetHRForException(comException);
IntPtr myObjPointer = new IntPtr(pointerValue);
myObj = (MyComInterfaceInCS) Marshal.GetObjectForIUnknown(myObjPointer);
}
.... 但,没有COM异常被赶,而且我猜测它因为指针不是负值,因此在技术上不是COM错误。有什么办法可以在对象上配置COM来抛出COM异常,但是S_OK(0)?
指针在HRESULT?哇。疼痛。 – 2011-06-06 23:59:43
哦,我的。你可怜的灵魂...... – dkackman 2011-06-07 00:00:49