reportAvOnComRelease MDA

更新 : 2007 年 11 月

reportAvOnComRelease マネージ デバッグ アシスタント (MDA: Managed Debugging Assistant) は、COM 相互運用を実行していて、COM の生呼び出しと組み合わせた Release メソッドまたは ReleaseComObject メソッドを使用しているときに、ユーザー参照カウントのエラーが原因で例外がスローされるとアクティブになります。

症状

アクセス違反およびメモリ破損が発生します。

原因

COM 相互運用を実行していて、生の COM 呼び出しと結びつけられた Release メソッドまたは ReleaseComObject メソッドを使用しているときに、ユーザー参照カウントのエラーが原因で例外がスローされることがあります。通常、この例外は破棄されます。破棄しないと CLR でのアクセス違反が発生し、ダウンしてしまうためです。このアシスタントが有効な場合は、そのような例外を単に破棄するのではなく、検出して報告できます。

解決策

参照カウントのコードを調べてエラーを探します。また、オブジェクトのネイティブ クライアントに参照カウントのエラーがないかどうかを調べてください。

ランタイムへの影響

2 つのモードを利用できます。allowAv 属性が true の場合、アシスタントは、ランタイムがアクセス違反を破棄しないようにします。allowAv が false の場合 (既定)、ランタイムはアクセス違反を破棄しますが、例外がスローされて破棄されたことを通知する警告メッセージがユーザーに報告されます。

出力

可能な場合、出力には COM インターフェイス ポインタの元の vtable が含まれます。それ以外の場合は、情報メッセージが表示されます。

構成

<mdaConfig>
  <assistants>
    <reportAvOnComRelease allowAv="false"/>
  </assistants>
</mdaConfig>

参照

概念

マネージ デバッグ アシスタントによるエラーの診断

相互運用マーシャリングの概要

参照

MarshalAsAttribute

その他の技術情報

相互運用性