invalidVariant MDA

更新:2007 年 11 月

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

症状

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

原因

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

解决办法

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

对运行库的影响

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

输出

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

配置

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

请参见

概念

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

Interop 封送处理概述

参考

MarshalAsAttribute

其他资源

互操作性