Ich konsumiere ein cpp COM-Objekt aus C# -Code. Mein C# Code sieht wie folgt aus:COM-Ausnahmen in C#
try
{
var res = myComServer.GetSomething();
}
catch (Exception e) { }
jedoch die Ausnahme nie irgendwelche Details I enthält in cpp gesetzt, insbesondere meine Fehlermeldung.
In meiner cav Seite Ich habe mehrere Beispiele folgte ich im Web gefunden haben:
...
ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;
hr = CreateErrorInfo(&pcerrinfo);
pcerrinfo->SetDescription(L"C++ Exception");
hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
if (SUCCEEDED(hr))
{
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
pcerrinfo->Release();
return E_FAIL; // E_FAIL or other appropriate failure code
...
Bin ich etwas fehlt? Gibt es noch etwas, das das beeinflussen könnte, wie das Marshalling, die Interop-Erstellung oder die Attribute des Com-Servers selbst?
+1 Das ist eine interessante Vermutung. Ich kann sehen, wie sich Beispiele im Web auf die Details konzentrieren und vernachlässigen, dass Sie Ihre Klasse mit ISupportErrorInfo markieren müssen. –