reportAvOnComRelease MDA
Note
この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含む、.NET の新しい実装には適用されません。
COM 相互運用を実行していて、COM の生呼び出しと組み合わせた reportAvOnComRelease
または Release メソッドを使用しているときに、ユーザー参照カウントのエラーが原因で例外がスローされると、ReleaseComObject マネージド デバッグ アシスタント (MDA) がアクティブ化されます。
現象
アクセス違反およびメモリ破損が発生します。
原因
COM 相互運用を実行していて、生の COM 呼び出しと組み合わせた Release または ReleaseComObject メソッドを使用しているときに、ユーザー参照カウントのエラーが原因で例外がスローされることがあります。 通常、この例外は破棄されます。これは、破棄しないと CLR でアクセス違反が発生し、ダウンしてしまうためです。 このアシスタントが有効な場合は、そのような例外を単に破棄するのではなく、検出して報告できます。
解決方法
参照カウントのコードを調べてエラーを探します。また、オブジェクトのネイティブ クライアントに参照カウントのエラーがないかどうかも調べます。
ランタイムへの影響
2 つのモードを利用できます。 allowAv
属性が true
の場合、アシスタントは、ランタイムがアクセス違反を破棄しないようにします。 allowAv
が false
の場合 (既定)、ランタイムはアクセス違反を破棄しますが、例外がスローされて破棄されたことを通知する警告メッセージがユーザーに報告されます。
出力
可能な場合、出力には COM インターフェイス ポインターの元の vtable が含まれます。 それ以外の場合は、情報メッセージが表示されます。
構成
<mdaConfig>
<assistants>
<reportAvOnComRelease />
</assistants>
</mdaConfig>
関連項目
.NET