invalidVariant MDA

如果在从本机代码或非托管代码到托管代码的调用期间遇到一个无效的 VARIANT 结构,则将激活 invalidVariant 托管调试助手 (MDA)。

症状

在本机代码和托管代码之间的转换期间发生了意外行为,包括将 VARIANT 封送处理到一个对象。

原因

本机代码将格式不正确的 VARIANT 结构传递给了托管代码。 如果 VARIANT 无效,则运行时将尝试将此 VARIANT 封送到一个对象并激活此 MDA。 无效的 VARIANT 示例包括 VARTYPE 为 VT_EMPTY | VT_BYREF 的 VARIANTVARTYPE 为 VT_VARIANT 的 VARIANT

解决方法

本机代码或非托管代码在传递 VARIANT 时必须确保 VARIANT 格式正确且已经初始化。

对运行时的影响

此 MDA 对运行时的行为无任何影响。

Output

一条 MDA 消息,指示运行时检测出一个非托管模块将一个无效的 VARIANT 传递给了托管代码。

配置

<mdaConfig>
  <assistants>
    <invalidVariant />
  </assistants>
</mdaConfig>

请参见

参考

MarshalAsAttribute

概念

使用托管调试助手诊断错误

互操作封送处理

其他资源

互操作性