注释
本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。
当 invalidVariant 从本机或非托管代码调用托管代码期间遇到无效 VARIANT 结构时,将激活托管调试助手(MDA)。
症状
在本机代码和托管代码之间转换期间发生的意外行为,涉及对对象的封送 VARIANT 。
原因
本机代码正在将格式 VARIANT 不正确的结构传递给托管代码。 运行时尝试将此封 VARIANT 送给对象,并在 MDA 无效的情况下 VARIANT 激活 MDA。 无效 VARIANT的 S 包含 VARIANTVARTYPE VT_EMPTY的示例 |VT_BYREF或 VARIANT 具有 VARTYPE VT_VARIANT。
解决方案
传递 VARIANT 的本机或非托管代码必须确保 VARIANT 正确形成和初始化。
对运行时的影响
MDA 对运行时的行为没有影响。
输出
指示运行时检测到非托管模块传递给托管代码无效 VARIANT 的 MDA 消息。
配置
<mdaConfig>
<assistants>
<invalidVariant />
</assistants>
</mdaConfig>