除了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