MSDN で、2 つの属性について次の説明を見つけました。
PreserveSig PreserveSig フィールドを true に設定して、管理されていない署名を HRESULT または retval 値で直接変換します。HRESULT または retval 値を例外に自動的に変換するには、false に設定します。デフォルトでは、PreserveSig フィールドは true です。
SetLastError呼び出し元が Marshal.GetLastWin32Error API 関数を使用して、メソッドの実行中にエラーが発生したかどうかを判断できるようにします。Visual Basic では、デフォルトは true です (オーバーヘッドがいくらか追加されます)。C# および C++ では、デフォルトは false です。
私の質問は次のとおりです。これら 2 つは互いにどのように関係していますか? PreserveSig を「false」に設定したとします。これは、HRESULT を例外に変換する必要があることを意味します。アンマネージ関数がエラーまたはエラーが発生しなかったことを示す整数を返す場合、これをどのように例外に変換できますか?
また、PreserveSig を使用して例外を抽出できたのに、なぜ GetLastWin32Error メソッドを呼び出す必要があるのでしょうか。
よろしくお願いしますPK