PInvoke を介して C++ アンマネージド DLL と対話する C# .NET 4.0 アプリケーションをテストしています。DLL によってスローされた例外をキャッチしたいと考えています。ネイティブ例外を処理するために、dll 関数を try/catch 句でラップしていますが、起動すると無視されます。試した:
try { } catch {}
try {} catch (Exception)
try {} catch (SEHException)
try {} catch (Win32Exception)
無駄に
機能する唯一のオプションは、DllImport SetLastErrorプロパティを true に設定し、関数チェックを呼び出した後に次のようにすることです。
if (Marshal.GetLastWin32Error() !=0)
これは満足のいく解決策ですが、他のオプションが効果を発揮しない理由と、たとえば例外が .
System.ComponentModel.Win32Exception (0x80004005): There is not enough space on the disk
それはWindows API自体からの通知ですか?